target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:32"
target triple = "i386-unknown-linux-gnu"
%A.1 = type {i8, i8, i8, i8}
%A.2 = type {%A.1, i8, i8, [10 x i8]}
@debug = global %A.2 zeroinitializer, align 1
%A.3 = type {i8, i8, i8, i8, i8, i8, i8}
@feature = global %A.3 zeroinitializer, align 1
@sys_O_RDONLY = internal constant i32 0, align 4
@sys_O_WRONLY = internal constant i32 1, align 4
@sys_O_RDWR = internal constant i32 2, align 4
@sys_O_CREAT = internal constant i32 64, align 4
@sys_O_TRUNC = internal constant i32 512, align 4
declare external [0 x i8]* @malloc(i32)
declare external void @memset([0 x i8]*, i32, i32)
define internal [0 x i8]* @sys_zalloc(i32 %nbytes$) nounwind {
L.0:
	%rv.0 = alloca [0 x i8]*
	%nbytes = alloca i32
	store i32 %nbytes$, i32* %nbytes
	%ptr = alloca [0 x i8]*
	%0 = load i32* %nbytes
	%1 = call [0 x i8]* @malloc(i32 %0)
	%2 = bitcast [0 x i8]* %1 to [0 x i8]*
	store [0 x i8]* %2, [0 x i8]** %ptr
	%3 = load [0 x i8]** %ptr
	%4 = bitcast [0 x i8]* %3 to [0 x i8]*
	%5 = load i32* %nbytes
	call void @memset([0 x i8]* %4, i32 0, i32 %5)
	%6 = load [0 x i8]** %ptr
	%7 = bitcast [0 x i8]* %6 to [0 x i8]*
	store [0 x i8]* %7, [0 x i8]** %rv.0
	br label %return
return:
	%8 = load [0 x i8]** %rv.0
	ret [0 x i8]* %8
}
declare external void @memcpy([0 x i8]*, [0 x i8]*, i32)
define internal [0 x i8]* @sys_memdup([0 x i8]* %fm$, i32 %len$) nounwind {
L.0:
	%rv.0 = alloca [0 x i8]*
	%fm = alloca [0 x i8]*
	%len = alloca i32
	store [0 x i8]* %fm$, [0 x i8]** %fm
	store i32 %len$, i32* %len
	%ptr = alloca [0 x i8]*
	%0 = load i32* %len
	%1 = call [0 x i8]* @malloc(i32 %0)
	%2 = bitcast [0 x i8]* %1 to [0 x i8]*
	store [0 x i8]* %2, [0 x i8]** %ptr
	%3 = load [0 x i8]** %ptr
	%4 = bitcast [0 x i8]* %3 to [0 x i8]*
	%5 = load [0 x i8]** %fm
	%6 = bitcast [0 x i8]* %5 to [0 x i8]*
	%7 = load i32* %len
	call void @memcpy([0 x i8]* %4, [0 x i8]* %6, i32 %7)
	%8 = load [0 x i8]** %ptr
	%9 = bitcast [0 x i8]* %8 to [0 x i8]*
	store [0 x i8]* %9, [0 x i8]** %rv.0
	br label %return
return:
	%10 = load [0 x i8]** %rv.0
	ret [0 x i8]* %10
}
define internal zeroext i8 @zstr_eq([0 x i8]* %s1$, [0 x i8]* %s2$, i32 %max$) nounwind {
L.0:
	%rv.0 = alloca i8
	%s1 = alloca [0 x i8]*
	%s2 = alloca [0 x i8]*
	%max = alloca i32
	store [0 x i8]* %s1$, [0 x i8]** %s1
	store [0 x i8]* %s2$, [0 x i8]** %s2
	store i32 %max$, i32* %max
	%i = alloca i32
	store i32 0, i32* %i
	br label %L.1
L.1:
	%0 = load i32* %i
	%1 = load i32* %max
	%2 = icmp ult i32 %0, %1
	br i1 %2, label %L.4, label %L.5
L.4:
	%3 = load [0 x i8]** %s1
	%4 = load i32* %i
	%5 = getelementptr [0 x i8]* %3, i32 0, i32 %4
	%6 = load i8* %5
	%7 = load [0 x i8]** %s2
	%8 = load i32* %i
	%9 = getelementptr [0 x i8]* %7, i32 0, i32 %8
	%10 = load i8* %9
	%11 = icmp eq i8 %6, %10
	br label %L.5
L.5:
	%12 = phi i1 [ false, %L.1 ], [ %11, %L.4 ]
	%13 = xor i1 %12, true
	br i1 %13, label %L.2, label %L.3
L.3:
	%14 = load [0 x i8]** %s1
	%15 = load i32* %i
	%16 = getelementptr [0 x i8]* %14, i32 0, i32 %15
	%17 = load i8* %16
	%18 = icmp eq i8 %17, 0
	br i1 %18, label %L.7, label %L.6
L.7:
	store i8 1, i8* %rv.0
	br label %return
L.6:
	%19 = load i32* %i
	%20 = add i32 %19, 1
	store i32 %20, i32* %i
	br label %L.1
L.2:
	store i8 0, i8* %rv.0
	br label %return
return:
	%21 = load i8* %rv.0
	ret i8 %21
}
define internal i32 @zstr_len([0 x i8]* %s$, i32 %max$) nounwind {
L.0:
	%rv.0 = alloca i32
	%s = alloca [0 x i8]*
	%max = alloca i32
	store [0 x i8]* %s$, [0 x i8]** %s
	store i32 %max$, i32* %max
	%i = alloca i32
	store i32 0, i32* %i
	br label %L.1
L.1:
	%0 = load i32* %i
	%1 = load i32* %max
	%2 = icmp ult i32 %0, %1
	br i1 %2, label %L.4, label %L.5
L.4:
	%3 = load [0 x i8]** %s
	%4 = load i32* %i
	%5 = getelementptr [0 x i8]* %3, i32 0, i32 %4
	%6 = load i8* %5
	%7 = icmp ne i8 %6, 0
	br label %L.5
L.5:
	%8 = phi i1 [ false, %L.1 ], [ %7, %L.4 ]
	%9 = xor i1 %8, true
	br i1 %9, label %L.2, label %L.3
L.3:
	%10 = load i32* %i
	%11 = add i32 %10, 1
	store i32 %11, i32* %i
	br label %L.1
L.2:
	%12 = load i32* %i
	store i32 %12, i32* %rv.0
	br label %return
return:
	%13 = load i32* %rv.0
	ret i32 %13
}
define internal i32 @zstr_find([0 x i8]* %s$, i8 zeroext %c$, i32 %max$) nounwind {
L.0:
	%rv.0 = alloca i32
	%s = alloca [0 x i8]*
	%c = alloca i8
	%max = alloca i32
	store [0 x i8]* %s$, [0 x i8]** %s
	store i8 %c$, i8* %c
	store i32 %max$, i32* %max
	%i = alloca i32
	store i32 0, i32* %i
	br label %L.1
L.1:
	%0 = load i32* %i
	%1 = load i32* %max
	%2 = icmp ult i32 %0, %1
	br i1 %2, label %L.6, label %L.7
L.6:
	%3 = load [0 x i8]** %s
	%4 = load i32* %i
	%5 = getelementptr [0 x i8]* %3, i32 0, i32 %4
	%6 = load i8* %5
	%7 = load i8* %c
	%8 = icmp ne i8 %6, %7
	br label %L.7
L.7:
	%9 = phi i1 [ false, %L.1 ], [ %8, %L.6 ]
	br i1 %9, label %L.4, label %L.5
L.4:
	%10 = load [0 x i8]** %s
	%11 = load i32* %i
	%12 = getelementptr [0 x i8]* %10, i32 0, i32 %11
	%13 = load i8* %12
	%14 = icmp ne i8 %13, 0
	br label %L.5
L.5:
	%15 = phi i1 [ false, %L.7 ], [ %14, %L.4 ]
	%16 = xor i1 %15, true
	br i1 %16, label %L.2, label %L.3
L.3:
	%17 = load i32* %i
	%18 = add i32 %17, 1
	store i32 %18, i32* %i
	br label %L.1
L.2:
	%19 = load i32* %i
	store i32 %19, i32* %rv.0
	br label %return
return:
	%20 = load i32* %rv.0
	ret i32 %20
}
define internal i32 @zstr_rfind([0 x i8]* %s$, i8 zeroext %c$, i32 %max$) nounwind {
L.0:
	%rv.0 = alloca i32
	%s = alloca [0 x i8]*
	%c = alloca i8
	%max = alloca i32
	store [0 x i8]* %s$, [0 x i8]** %s
	store i8 %c$, i8* %c
	store i32 %max$, i32* %max
	%i = alloca i32
	%0 = load [0 x i8]** %s
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = load i32* %max
	%3 = call i32 @zstr_len([0 x i8]* %1, i32 %2)
	store i32 %3, i32* %i
	br label %L.1
L.1:
	%4 = load [0 x i8]** %s
	%5 = load i32* %i
	%6 = getelementptr [0 x i8]* %4, i32 0, i32 %5
	%7 = load i8* %6
	%8 = load i8* %c
	%9 = icmp ne i8 %7, %8
	%10 = xor i1 %9, true
	br i1 %10, label %L.2, label %L.3
L.3:
	%11 = load i32* %i
	%12 = icmp eq i32 %11, 0
	br i1 %12, label %L.5, label %L.4
L.5:
	%13 = load i32* %max
	store i32 %13, i32* %i
	br label %L.2
L.4:
	%14 = load i32* %i
	%15 = sub i32 %14, 1
	store i32 %15, i32* %i
	br label %L.1
L.2:
	%16 = load i32* %i
	store i32 %16, i32* %rv.0
	br label %return
return:
	%17 = load i32* %rv.0
	ret i32 %17
}
define internal void @zstr_copy([0 x i8]* %to$, [0 x i8]* %fm$, i32 %max$) nounwind {
L.0:
	%to = alloca [0 x i8]*
	%fm = alloca [0 x i8]*
	%max = alloca i32
	store [0 x i8]* %to$, [0 x i8]** %to
	store [0 x i8]* %fm$, [0 x i8]** %fm
	store i32 %max$, i32* %max
	%i = alloca i32
	store i32 0, i32* %i
	br label %L.1
L.1:
	%0 = load i32* %i
	%1 = load i32* %max
	%2 = icmp ult i32 %0, %1
	%3 = xor i1 %2, true
	br i1 %3, label %L.2, label %L.3
L.3:
	%4 = load [0 x i8]** %fm
	%5 = load i32* %i
	%6 = getelementptr [0 x i8]* %4, i32 0, i32 %5
	%7 = load i8* %6
	%8 = load [0 x i8]** %to
	%9 = load i32* %i
	%10 = getelementptr [0 x i8]* %8, i32 0, i32 %9
	store i8 %7, i8* %10
	%11 = load [0 x i8]** %fm
	%12 = load i32* %i
	%13 = getelementptr [0 x i8]* %11, i32 0, i32 %12
	%14 = load i8* %13
	%15 = icmp eq i8 %14, 0
	br i1 %15, label %L.2, label %L.4
L.4:
	%16 = load i32* %i
	%17 = add i32 %16, 1
	store i32 %17, i32* %i
	br label %L.1
L.2:
	br label %return
return:
	ret void
}
define internal void @zstr_cat([0 x i8]* %to$, [0 x i8]* %fm$, i32 %max$) nounwind {
L.0:
	%to = alloca [0 x i8]*
	%fm = alloca [0 x i8]*
	%max = alloca i32
	store [0 x i8]* %to$, [0 x i8]** %to
	store [0 x i8]* %fm$, [0 x i8]** %fm
	store i32 %max$, i32* %max
	%i = alloca i32
	%j = alloca i32
	%0 = load [0 x i8]** %to
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = load i32* %max
	%3 = call i32 @zstr_len([0 x i8]* %1, i32 %2)
	store i32 %3, i32* %i
	store i32 0, i32* %j
	br label %L.1
L.1:
	%4 = load i32* %i
	%5 = load i32* %max
	%6 = icmp ult i32 %4, %5
	%7 = xor i1 %6, true
	br i1 %7, label %L.2, label %L.3
L.3:
	%8 = load [0 x i8]** %fm
	%9 = load i32* %j
	%10 = getelementptr [0 x i8]* %8, i32 0, i32 %9
	%11 = load i8* %10
	%12 = load [0 x i8]** %to
	%13 = load i32* %i
	%14 = getelementptr [0 x i8]* %12, i32 0, i32 %13
	store i8 %11, i8* %14
	%15 = load [0 x i8]** %fm
	%16 = load i32* %j
	%17 = getelementptr [0 x i8]* %15, i32 0, i32 %16
	%18 = load i8* %17
	%19 = icmp eq i8 %18, 0
	br i1 %19, label %L.2, label %L.4
L.4:
	%20 = load i32* %i
	%21 = add i32 %20, 1
	store i32 %21, i32* %i
	%22 = load i32* %j
	%23 = add i32 %22, 1
	store i32 %23, i32* %j
	br label %L.1
L.2:
	br label %return
return:
	ret void
}
declare external i32 @write(i32, [0 x i8]*, i32)
@S.1 = internal constant [2 x i8] c"\0A\00"
define internal void @sys_fildes_nl(i32 %o$) nounwind {
L.0:
	%o = alloca i32
	store i32 %o$, i32* %o
	%0 = load i32* %o
	%1 = getelementptr [2 x i8]* @S.1
	%2 = bitcast [2 x i8]* %1 to [0 x i8]*
	%3 = call i32 @write(i32 %0, [0 x i8]* %2, i32 1)
	br label %return
return:
	ret void
}
define internal void @sys_fildes_chr(i32 %o$, i8 zeroext %c$) nounwind {
L.0:
	%o = alloca i32
	%c = alloca i8
	store i32 %o$, i32* %o
	store i8 %c$, i8* %c
	%buf = alloca [1 x i8]
	%0 = load i8* %c
	%1 = getelementptr [1 x i8]* %buf, i32 0, i32 0
	store i8 %0, i8* %1
	%2 = load i32* %o
	%3 = bitcast [1 x i8]* %buf to [0 x i8]*
	%4 = call i32 @write(i32 %2, [0 x i8]* %3, i32 1)
	br label %return
return:
	ret void
}
define internal void @sys_fildes_str(i32 %o$, [0 x i8]* %s$) nounwind {
L.0:
	%o = alloca i32
	%s = alloca [0 x i8]*
	store i32 %o$, i32* %o
	store [0 x i8]* %s$, [0 x i8]** %s
	%n = alloca i32
	%0 = load [0 x i8]** %s
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = call i32 @zstr_len([0 x i8]* %1, i32 65535)
	store i32 %2, i32* %n
	%3 = load i32* %o
	%4 = load [0 x i8]** %s
	%5 = bitcast [0 x i8]* %4 to [0 x i8]*
	%6 = load i32* %n
	%7 = call i32 @write(i32 %3, [0 x i8]* %5, i32 %6)
	br label %return
return:
	ret void
}
define internal void @sys_fildes_strn(i32 %o$, [0 x i8]* %s$, i32 %len$) nounwind {
L.0:
	%o = alloca i32
	%s = alloca [0 x i8]*
	%len = alloca i32
	store i32 %o$, i32* %o
	store [0 x i8]* %s$, [0 x i8]** %s
	store i32 %len$, i32* %len
	%0 = load i32* %o
	%1 = load [0 x i8]** %s
	%2 = bitcast [0 x i8]* %1 to [0 x i8]*
	%3 = load i32* %len
	%4 = call i32 @write(i32 %0, [0 x i8]* %2, i32 %3)
	br label %return
return:
	ret void
}
@out_hexchr = internal constant [16 x i8] [ i8 48, i8 49, i8 50, i8 51, i8 52, i8 53, i8 54, i8 55, i8 56, i8 57, i8 65, i8 66, i8 67, i8 68, i8 69, i8 70 ], align 1
define internal void @sys_fildes_hex8(i32 %o$, i8 zeroext %in$) nounwind {
L.0:
	%o = alloca i32
	%in = alloca i8
	store i32 %o$, i32* %o
	store i8 %in$, i8* %in
	%buf = alloca [2 x i8]
	%0 = load i8* %in
	%1 = zext i8 %0 to i32
	%2 = lshr i32 %1, 4
	%3 = and i32 %2, 15
	%4 = getelementptr [16 x i8]* @out_hexchr, i32 0, i32 %3
	%5 = load i8* %4
	%6 = getelementptr [2 x i8]* %buf, i32 0, i32 0
	store i8 %5, i8* %6
	%7 = load i8* %in
	%8 = and i8 %7, 15
	%9 = zext i8 %8 to i32
	%10 = getelementptr [16 x i8]* @out_hexchr, i32 0, i32 %9
	%11 = load i8* %10
	%12 = getelementptr [2 x i8]* %buf, i32 0, i32 1
	store i8 %11, i8* %12
	%13 = load i32* %o
	%14 = bitcast [2 x i8]* %buf to [0 x i8]*
	%15 = call i32 @write(i32 %13, [0 x i8]* %14, i32 2)
	br label %return
return:
	ret void
}
define internal void @sys_fildes_hex16(i32 %o$, i16 zeroext %in$) nounwind {
L.0:
	%o = alloca i32
	%in = alloca i16
	store i32 %o$, i32* %o
	store i16 %in$, i16* %in
	%buf = alloca [4 x i8]
	%0 = load i16* %in
	%1 = zext i16 %0 to i32
	%2 = lshr i32 %1, 12
	%3 = and i32 %2, 15
	%4 = getelementptr [16 x i8]* @out_hexchr, i32 0, i32 %3
	%5 = load i8* %4
	%6 = getelementptr [4 x i8]* %buf, i32 0, i32 0
	store i8 %5, i8* %6
	%7 = load i16* %in
	%8 = zext i16 %7 to i32
	%9 = lshr i32 %8, 8
	%10 = and i32 %9, 15
	%11 = getelementptr [16 x i8]* @out_hexchr, i32 0, i32 %10
	%12 = load i8* %11
	%13 = getelementptr [4 x i8]* %buf, i32 0, i32 1
	store i8 %12, i8* %13
	%14 = load i16* %in
	%15 = zext i16 %14 to i32
	%16 = lshr i32 %15, 4
	%17 = and i32 %16, 15
	%18 = getelementptr [16 x i8]* @out_hexchr, i32 0, i32 %17
	%19 = load i8* %18
	%20 = getelementptr [4 x i8]* %buf, i32 0, i32 2
	store i8 %19, i8* %20
	%21 = load i16* %in
	%22 = and i16 %21, 15
	%23 = zext i16 %22 to i32
	%24 = getelementptr [16 x i8]* @out_hexchr, i32 0, i32 %23
	%25 = load i8* %24
	%26 = getelementptr [4 x i8]* %buf, i32 0, i32 3
	store i8 %25, i8* %26
	%27 = load i32* %o
	%28 = bitcast [4 x i8]* %buf to [0 x i8]*
	%29 = call i32 @write(i32 %27, [0 x i8]* %28, i32 4)
	br label %return
return:
	ret void
}
define internal void @sys_fildes_hex32(i32 %o$, i32 %in$) nounwind {
L.0:
	%o = alloca i32
	%in = alloca i32
	store i32 %o$, i32* %o
	store i32 %in$, i32* %in
	%buf = alloca [8 x i8]
	%i = alloca i32
	store i32 7, i32* %i
	br label %L.1
L.1:
	%0 = load i32* %in
	%1 = and i32 %0, 15
	%2 = getelementptr [16 x i8]* @out_hexchr, i32 0, i32 %1
	%3 = load i8* %2
	%4 = load i32* %i
	%5 = getelementptr [8 x i8]* %buf, i32 0, i32 %4
	store i8 %3, i8* %5
	%6 = load i32* %i
	%7 = icmp eq i32 %6, 0
	br i1 %7, label %L.2, label %L.3
L.3:
	%8 = load i32* %i
	%9 = sub i32 %8, 1
	store i32 %9, i32* %i
	%10 = load i32* %in
	%11 = lshr i32 %10, 4
	store i32 %11, i32* %in
	br label %L.1
L.2:
	%12 = load i32* %o
	%13 = bitcast [8 x i8]* %buf to [0 x i8]*
	%14 = call i32 @write(i32 %12, [0 x i8]* %13, i32 8)
	br label %return
return:
	ret void
}
define internal void @sys_fildes_hex64(i32 %o$, i64 %in$) nounwind {
L.0:
	%o = alloca i32
	%in = alloca i64
	store i32 %o$, i32* %o
	store i64 %in$, i64* %in
	%buf = alloca [16 x i8]
	%i = alloca i8
	store i8 15, i8* %i
	br label %L.1
L.1:
	%0 = load i64* %in
	%1 = trunc i64 %0 to i32
	%2 = and i32 %1, 15
	%3 = getelementptr [16 x i8]* @out_hexchr, i32 0, i32 %2
	%4 = load i8* %3
	%5 = load i8* %i
	%6 = zext i8 %5 to i32
	%7 = getelementptr [16 x i8]* %buf, i32 0, i32 %6
	store i8 %4, i8* %7
	%8 = load i8* %i
	%9 = icmp eq i8 %8, 0
	br i1 %9, label %L.2, label %L.3
L.3:
	%10 = load i8* %i
	%11 = sub i8 %10, 1
	store i8 %11, i8* %i
	%12 = load i64* %in
	%13 = lshr i64 %12, 4
	store i64 %13, i64* %in
	br label %L.1
L.2:
	%14 = load i32* %o
	%15 = bitcast [16 x i8]* %buf to [0 x i8]*
	%16 = call i32 @write(i32 %14, [0 x i8]* %15, i32 16)
	br label %return
return:
	ret void
}
define internal void @sys_fildes_hex(i32 %o$, i32 %in$) alwaysinline nounwind {
L.0:
	%o = alloca i32
	%in = alloca i32
	store i32 %o$, i32* %o
	store i32 %in$, i32* %in
	%0 = load i32* %o
	%1 = load i32* %in
	call void @sys_fildes_hex32(i32 %0, i32 %1)
	br label %return
return:
	ret void
}
define internal void @sys_fildes_uint64(i32 %o$, i64 %in$) nounwind {
L.0:
	%o = alloca i32
	%in = alloca i64
	store i32 %o$, i32* %o
	store i64 %in$, i64* %in
	%i = alloca i32
	%buf = alloca [20 x i8]
	store i32 20, i32* %i
	%0 = load i64* %in
	%1 = icmp eq i64 %0, 0
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load i32* %i
	%3 = sub i32 %2, 1
	store i32 %3, i32* %i
	%4 = load i32* %i
	%5 = getelementptr [20 x i8]* %buf, i32 0, i32 %4
	store i8 48, i8* %5
	br label %L.1
L.3:
	br label %L.4
L.4:
	%6 = load i64* %in
	%7 = icmp ne i64 %6, 0
	%8 = xor i1 %7, true
	br i1 %8, label %L.5, label %L.6
L.6:
	%9 = load i32* %i
	%10 = sub i32 %9, 1
	store i32 %10, i32* %i
	%11 = load i64* %in
	%12 = urem i64 %11, 10
	%13 = add i64 %12, 48
	%14 = trunc i64 %13 to i8
	%15 = load i32* %i
	%16 = getelementptr [20 x i8]* %buf, i32 0, i32 %15
	store i8 %14, i8* %16
	%17 = load i64* %in
	%18 = udiv i64 %17, 10
	store i64 %18, i64* %in
	br label %L.4
L.5:
	br label %L.1
L.1:
	%19 = load i32* %o
	%20 = load i32* %i
	%21 = getelementptr [20 x i8]* %buf, i32 0, i32 %20
	%22 = bitcast i8* %21 to [20 x i8]*
	%23 = getelementptr [20 x i8]* %22
	%24 = bitcast [20 x i8]* %23 to [0 x i8]*
	%25 = load i32* %i
	%26 = sub i32 20, %25
	%27 = call i32 @write(i32 %19, [0 x i8]* %24, i32 %26)
	br label %return
return:
	ret void
}
define internal void @sys_fildes_uint32(i32 %o$, i32 %in$) nounwind {
L.0:
	%o = alloca i32
	%in = alloca i32
	store i32 %o$, i32* %o
	store i32 %in$, i32* %in
	%i = alloca i32
	%buf = alloca [10 x i8]
	store i32 10, i32* %i
	%0 = load i32* %in
	%1 = icmp eq i32 %0, 0
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load i32* %i
	%3 = sub i32 %2, 1
	store i32 %3, i32* %i
	%4 = load i32* %i
	%5 = getelementptr [10 x i8]* %buf, i32 0, i32 %4
	store i8 48, i8* %5
	br label %L.1
L.3:
	br label %L.4
L.4:
	%6 = load i32* %in
	%7 = icmp ne i32 %6, 0
	%8 = xor i1 %7, true
	br i1 %8, label %L.5, label %L.6
L.6:
	%9 = load i32* %i
	%10 = sub i32 %9, 1
	store i32 %10, i32* %i
	%11 = load i32* %in
	%12 = urem i32 %11, 10
	%13 = add i32 %12, 48
	%14 = trunc i32 %13 to i8
	%15 = load i32* %i
	%16 = getelementptr [10 x i8]* %buf, i32 0, i32 %15
	store i8 %14, i8* %16
	%17 = load i32* %in
	%18 = udiv i32 %17, 10
	store i32 %18, i32* %in
	br label %L.4
L.5:
	br label %L.1
L.1:
	%19 = load i32* %o
	%20 = load i32* %i
	%21 = getelementptr [10 x i8]* %buf, i32 0, i32 %20
	%22 = bitcast i8* %21 to [10 x i8]*
	%23 = getelementptr [10 x i8]* %22
	%24 = bitcast [10 x i8]* %23 to [0 x i8]*
	%25 = load i32* %i
	%26 = sub i32 10, %25
	%27 = call i32 @write(i32 %19, [0 x i8]* %24, i32 %26)
	br label %return
return:
	ret void
}
define internal void @sys_fildes_uint16(i32 %o$, i16 zeroext %in$) nounwind {
L.0:
	%o = alloca i32
	%in = alloca i16
	store i32 %o$, i32* %o
	store i16 %in$, i16* %in
	%0 = load i32* %o
	%1 = load i16* %in
	%2 = zext i16 %1 to i32
	call void @sys_fildes_uint32(i32 %0, i32 %2)
	br label %return
return:
	ret void
}
define internal void @sys_fildes_uint8(i32 %o$, i8 zeroext %in$) nounwind {
L.0:
	%o = alloca i32
	%in = alloca i8
	store i32 %o$, i32* %o
	store i8 %in$, i8* %in
	%0 = load i32* %o
	%1 = load i8* %in
	%2 = zext i8 %1 to i32
	call void @sys_fildes_uint32(i32 %0, i32 %2)
	br label %return
return:
	ret void
}
define internal void @sys_fildes_uint(i32 %o$, i32 %in$) alwaysinline nounwind {
L.0:
	%o = alloca i32
	%in = alloca i32
	store i32 %o$, i32* %o
	store i32 %in$, i32* %in
	%0 = load i32* %o
	%1 = load i32* %in
	call void @sys_fildes_uint32(i32 %0, i32 %1)
	br label %return
return:
	ret void
}
@S.3 = internal constant [2 x i8] c"-\00"
define internal void @sys_fildes_int64(i32 %o$, i64 %in$) nounwind {
L.0:
	%o = alloca i32
	%in = alloca i64
	store i32 %o$, i32* %o
	store i64 %in$, i64* %in
	%ui = alloca i64
	%0 = load i64* %in
	%1 = icmp slt i64 %0, 0
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load i32* %o
	%3 = getelementptr [2 x i8]* @S.3
	%4 = bitcast [2 x i8]* %3 to [0 x i8]*
	%5 = call i32 @write(i32 %2, [0 x i8]* %4, i32 1)
	%6 = load i64* %in
	%7 = sub i64 0, %6
	store i64 %7, i64* %ui
	br label %L.1
L.3:
	%8 = load i64* %in
	store i64 %8, i64* %ui
	br label %L.1
L.1:
	%9 = load i32* %o
	%10 = load i64* %ui
	call void @sys_fildes_uint64(i32 %9, i64 %10)
	br label %return
return:
	ret void
}
@S.4 = internal constant [2 x i8] c"-\00"
define internal void @sys_fildes_int32(i32 %o$, i32 %in$) nounwind {
L.0:
	%o = alloca i32
	%in = alloca i32
	store i32 %o$, i32* %o
	store i32 %in$, i32* %in
	%ui = alloca i32
	%0 = load i32* %in
	%1 = icmp slt i32 %0, 0
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load i32* %o
	%3 = getelementptr [2 x i8]* @S.4
	%4 = bitcast [2 x i8]* %3 to [0 x i8]*
	%5 = call i32 @write(i32 %2, [0 x i8]* %4, i32 1)
	%6 = load i32* %in
	%7 = sub i32 0, %6
	%8 = sext i32 %7 to i64
	%9 = trunc i64 %8 to i32
	store i32 %9, i32* %ui
	br label %L.1
L.3:
	%10 = load i32* %in
	%11 = sext i32 %10 to i64
	%12 = trunc i64 %11 to i32
	store i32 %12, i32* %ui
	br label %L.1
L.1:
	%13 = load i32* %o
	%14 = load i32* %ui
	call void @sys_fildes_uint32(i32 %13, i32 %14)
	br label %return
return:
	ret void
}
define internal void @sys_fildes_int16(i32 %o$, i16 signext %in$) nounwind {
L.0:
	%o = alloca i32
	%in = alloca i16
	store i32 %o$, i32* %o
	store i16 %in$, i16* %in
	%0 = load i32* %o
	%1 = load i16* %in
	%2 = sext i16 %1 to i32
	call void @sys_fildes_int32(i32 %0, i32 %2)
	br label %return
return:
	ret void
}
define internal void @sys_fildes_int8(i32 %o$, i8 signext %in$) nounwind {
L.0:
	%o = alloca i32
	%in = alloca i8
	store i32 %o$, i32* %o
	store i8 %in$, i8* %in
	%0 = load i32* %o
	%1 = load i8* %in
	%2 = sext i8 %1 to i32
	call void @sys_fildes_int32(i32 %0, i32 %2)
	br label %return
return:
	ret void
}
define internal void @sys_fildes_int(i32 %o$, i32 %in$) alwaysinline nounwind {
L.0:
	%o = alloca i32
	%in = alloca i32
	store i32 %o$, i32* %o
	store i32 %in$, i32* %in
	%0 = load i32* %o
	%1 = load i32* %in
	call void @sys_fildes_int32(i32 %0, i32 %1)
	br label %return
return:
	ret void
}
@err = constant i32 2, align 4
@msg = constant i32 1, align 4
@lex_FirstError = internal constant i8 7, align 1
@S.6 = internal constant [30 x i8] c"Feature not yet implemented: \00"
@S.7 = internal constant [26 x i8] c"Feature is experimental: \00"
@S.8 = internal constant [34 x i8] c"Truncation may cause loss of data\00"
@S.9 = internal constant [38 x i8] c"Converting unsigned to signed integer\00"
@S.10 = internal constant [38 x i8] c"Converting signed to unsigned integer\00"
@S.11 = internal constant [42 x i8] c"Pointer converted from wrong size integer\00"
@S.12 = internal constant [33 x i8] c"Use of identifier is ambiguous: \00"
@S.13 = internal constant [44 x i8] c"End of line in string or character constant\00"
@S.14 = internal constant [28 x i8] c"Illegal character in source\00"
@S.15 = internal constant [30 x i8] c"Illegal byte in UTF8 sequence\00"
@S.16 = internal constant [23 x i8] c"End of file in comment\00"
@S.17 = internal constant [23 x i8] c"Unexpected end of file\00"
@S.18 = internal constant [29 x i8] c"Malformed character constant\00"
@S.19 = internal constant [53 x i8] c"Malformed hex escape in string or character constant\00"
@S.20 = internal constant [25 x i8] c"Malformed unicode escape\00"
@S.21 = internal constant [20 x i8] c"Identifier too long\00"
@S.22 = internal constant [16 x i8] c"String too long\00"
@S.23 = internal constant [11 x i8] c"Expected: \00"
@S.24 = internal constant [20 x i8] c"Expected identifier\00"
@S.25 = internal constant [23 x i8] c"Undefined identifier: \00"
@S.26 = internal constant [28 x i8] c"Identifier already in use: \00"
@S.27 = internal constant [18 x i8] c"Undefined field: \00"
@S.28 = internal constant [24 x i8] c"Unexpected identifier: \00"
@S.29 = internal constant [35 x i8] c"Cannot dereference incomplete type\00"
@S.30 = internal constant [28 x i8] c"Illegal index specification\00"
@S.31 = internal constant [25 x i8] c"Identifier has no type: \00"
@S.32 = internal constant [25 x i8] c"Expected type identifier\00"
@S.33 = internal constant [25 x i8] c"Error in type definition\00"
@S.34 = internal constant [26 x i8] c"Enumeration type required\00"
@S.35 = internal constant [33 x i8] c"Illegal use of type identifier: \00"
@S.36 = internal constant [34 x i8] c"Operation not suppported for type\00"
@S.37 = internal constant [25 x i8] c"Error in type definition\00"
@S.38 = internal constant [20 x i8] c"Unknown attribute: \00"
@S.39 = internal constant [45 x i8] c"Statement begins with undefined identifier: \00"
@S.40 = internal constant [49 x i8] c"Statement begins with inappropriate identifier: \00"
@S.41 = internal constant [44 x i8] c"Statement begins with inappropriate token: \00"
@S.42 = internal constant [37 x i8] c"Illegal comparison, bad type perhaps\00"
@S.43 = internal constant [46 x i8] c"Syntax error in possible assignment statement\00"
@S.44 = internal constant [19 x i8] c"Illegal assignment\00"
@S.45 = internal constant [26 x i8] c"Illegal lhs in assignment\00"
@S.46 = internal constant [26 x i8] c"Illegal rhs in assignment\00"
@S.47 = internal constant [28 x i8] c"Type mismatch in assignment\00"
@S.48 = internal constant [36 x i8] c"Not enough rhs values in assignment\00"
@S.49 = internal constant [34 x i8] c"Too many rhs values in assignment\00"
@S.50 = internal constant [51 x i8] c"Return with no value in procedure that expects one\00"
@S.51 = internal constant [38 x i8] c"Call of undefined forward procedure: \00"
@S.52 = internal constant [51 x i8] c"Parameter types changed from forward declaration: \00"
@S.53 = internal constant [54 x i8] c"Return value types changed from forward declaration: \00"
@S.54 = internal constant [28 x i8] c"Boolean expression required\00"
@S.55 = internal constant [37 x i8] c"Unsigned integer expression required\00"
@S.56 = internal constant [13 x i8] c"Illegal cast\00"
@S.57 = internal constant [33 x i8] c"Missing type for composite value\00"
@S.58 = internal constant [33 x i8] c"Illegal type for composite value\00"
@S.59 = internal constant [41 x i8] c"Missing or undefined property identifier\00"
@S.60 = internal constant [25 x i8] c"Expecting \22then\22 or \22is\22\00"
@S.61 = internal constant [21 x i8] c"Error in \22is\22 clause\00"
@S.62 = internal constant [34 x i8] c"Return statement not in procedure\00"
@S.63 = internal constant [29 x i8] c"Exit statement not in a loop\00"
@S.64 = internal constant [29 x i8] c"Unknown statement in package\00"
@S.65 = internal constant [14 x i8] c"Not a pointer\00"
@S.66 = internal constant [13 x i8] c"Not an array\00"
@S.67 = internal constant [33 x i8] c"Array copy with undefined length\00"
@S.68 = internal constant [20 x i8] c"Illegal array index\00"
@S.69 = internal constant [13 x i8] c"Not a record\00"
@S.70 = internal constant [35 x i8] c"Syntax error in record declaration\00"
@S.71 = internal constant [27 x i8] c"Base type must be a record\00"
@S.72 = internal constant [33 x i8] c"Base type must be an enumeration\00"
@S.73 = internal constant [41 x i8] c"Insufficient arguments to procedure call\00"
@S.74 = internal constant [37 x i8] c"Too many arguments to procedure call\00"
@S.75 = internal constant [49 x i8] c"Actual parameter type not compatible with formal\00"
@S.76 = internal constant [22 x i8] c"Too many initializers\00"
@S.77 = internal constant [32 x i8] c"Const requires a constant value\00"
@S.78 = internal constant [43 x i8] c"Expression must be a compile-time constant\00"
@S.79 = internal constant [22 x i8] c"Unable to open file: \00"
@S.80 = internal constant [29 x i8] c"Expected variable identifier\00"
@S.81 = internal constant [35 x i8] c"Flexible array must be final field\00"
@S.82 = internal constant [28 x i8] c"Unresolved forward symbol: \00"
@S.83 = internal constant [30 x i8] c"Syntax error in for statement\00"
@S.84 = internal constant [22 x i8] c"Expected section name\00"
@S.85 = internal constant [24 x i8] c"Packed record too large\00"
@S.86 = internal constant [23 x i8] c"Packed array too large\00"
@S.87 = internal constant [44 x i8] c"Can not specify size for fixed sized object\00"
@S.88 = internal constant [44 x i8] c"Must specify size for variable sized object\00"
@S.89 = internal constant [47 x i8] c"Specified size smaller that actual object size\00"
@S.90 = internal constant [31 x i8] c"Illegal field offset specified\00"
@S.91 = internal constant [24 x i8] c"Program defined error: \00"
@S.92 = internal constant [26 x i8] c"Internal compiler error: \00"
@lex_ErrMsg = internal constant [87 x [0 x i8]*] [ [0 x i8]* bitcast( [30 x i8]* getelementptr( [30 x i8]* @S.6 )  to [0 x i8]* ), [0 x i8]* bitcast( [26 x i8]* getelementptr( [26 x i8]* @S.7 )  to [0 x i8]* ), [0 x i8]* bitcast( [34 x i8]* getelementptr( [34 x i8]* @S.8 )  to [0 x i8]* ), [0 x i8]* bitcast( [38 x i8]* getelementptr( [38 x i8]* @S.9 )  to [0 x i8]* ), [0 x i8]* bitcast( [38 x i8]* getelementptr( [38 x i8]* @S.10 )  to [0 x i8]* ), [0 x i8]* bitcast( [42 x i8]* getelementptr( [42 x i8]* @S.11 )  to [0 x i8]* ), [0 x i8]* bitcast( [33 x i8]* getelementptr( [33 x i8]* @S.12 )  to [0 x i8]* ), [0 x i8]* bitcast( [44 x i8]* getelementptr( [44 x i8]* @S.13 )  to [0 x i8]* ), [0 x i8]* bitcast( [28 x i8]* getelementptr( [28 x i8]* @S.14 )  to [0 x i8]* ), [0 x i8]* bitcast( [30 x i8]* getelementptr( [30 x i8]* @S.15 )  to [0 x i8]* ), [0 x i8]* bitcast( [23 x i8]* getelementptr( [23 x i8]* @S.16 )  to [0 x i8]* ), [0 x i8]* bitcast( [23 x i8]* getelementptr( [23 x i8]* @S.17 )  to [0 x i8]* ), [0 x i8]* bitcast( [29 x i8]* getelementptr( [29 x i8]* @S.18 )  to [0 x i8]* ), [0 x i8]* bitcast( [53 x i8]* getelementptr( [53 x i8]* @S.19 )  to [0 x i8]* ), [0 x i8]* bitcast( [25 x i8]* getelementptr( [25 x i8]* @S.20 )  to [0 x i8]* ), [0 x i8]* bitcast( [20 x i8]* getelementptr( [20 x i8]* @S.21 )  to [0 x i8]* ), [0 x i8]* bitcast( [16 x i8]* getelementptr( [16 x i8]* @S.22 )  to [0 x i8]* ), [0 x i8]* bitcast( [11 x i8]* getelementptr( [11 x i8]* @S.23 )  to [0 x i8]* ), [0 x i8]* bitcast( [20 x i8]* getelementptr( [20 x i8]* @S.24 )  to [0 x i8]* ), [0 x i8]* bitcast( [23 x i8]* getelementptr( [23 x i8]* @S.25 )  to [0 x i8]* ), [0 x i8]* bitcast( [28 x i8]* getelementptr( [28 x i8]* @S.26 )  to [0 x i8]* ), [0 x i8]* bitcast( [18 x i8]* getelementptr( [18 x i8]* @S.27 )  to [0 x i8]* ), [0 x i8]* bitcast( [24 x i8]* getelementptr( [24 x i8]* @S.28 )  to [0 x i8]* ), [0 x i8]* bitcast( [35 x i8]* getelementptr( [35 x i8]* @S.29 )  to [0 x i8]* ), [0 x i8]* bitcast( [28 x i8]* getelementptr( [28 x i8]* @S.30 )  to [0 x i8]* ), [0 x i8]* bitcast( [25 x i8]* getelementptr( [25 x i8]* @S.31 )  to [0 x i8]* ), [0 x i8]* bitcast( [25 x i8]* getelementptr( [25 x i8]* @S.32 )  to [0 x i8]* ), [0 x i8]* bitcast( [25 x i8]* getelementptr( [25 x i8]* @S.33 )  to [0 x i8]* ), [0 x i8]* bitcast( [26 x i8]* getelementptr( [26 x i8]* @S.34 )  to [0 x i8]* ), [0 x i8]* bitcast( [33 x i8]* getelementptr( [33 x i8]* @S.35 )  to [0 x i8]* ), [0 x i8]* bitcast( [34 x i8]* getelementptr( [34 x i8]* @S.36 )  to [0 x i8]* ), [0 x i8]* bitcast( [25 x i8]* getelementptr( [25 x i8]* @S.37 )  to [0 x i8]* ), [0 x i8]* bitcast( [20 x i8]* getelementptr( [20 x i8]* @S.38 )  to [0 x i8]* ), [0 x i8]* bitcast( [45 x i8]* getelementptr( [45 x i8]* @S.39 )  to [0 x i8]* ), [0 x i8]* bitcast( [49 x i8]* getelementptr( [49 x i8]* @S.40 )  to [0 x i8]* ), [0 x i8]* bitcast( [44 x i8]* getelementptr( [44 x i8]* @S.41 )  to [0 x i8]* ), [0 x i8]* bitcast( [37 x i8]* getelementptr( [37 x i8]* @S.42 )  to [0 x i8]* ), [0 x i8]* bitcast( [46 x i8]* getelementptr( [46 x i8]* @S.43 )  to [0 x i8]* ), [0 x i8]* bitcast( [19 x i8]* getelementptr( [19 x i8]* @S.44 )  to [0 x i8]* ), [0 x i8]* bitcast( [26 x i8]* getelementptr( [26 x i8]* @S.45 )  to [0 x i8]* ), [0 x i8]* bitcast( [26 x i8]* getelementptr( [26 x i8]* @S.46 )  to [0 x i8]* ), [0 x i8]* bitcast( [28 x i8]* getelementptr( [28 x i8]* @S.47 )  to [0 x i8]* ), [0 x i8]* bitcast( [36 x i8]* getelementptr( [36 x i8]* @S.48 )  to [0 x i8]* ), [0 x i8]* bitcast( [34 x i8]* getelementptr( [34 x i8]* @S.49 )  to [0 x i8]* ), [0 x i8]* bitcast( [51 x i8]* getelementptr( [51 x i8]* @S.50 )  to [0 x i8]* ), [0 x i8]* bitcast( [38 x i8]* getelementptr( [38 x i8]* @S.51 )  to [0 x i8]* ), [0 x i8]* bitcast( [51 x i8]* getelementptr( [51 x i8]* @S.52 )  to [0 x i8]* ), [0 x i8]* bitcast( [54 x i8]* getelementptr( [54 x i8]* @S.53 )  to [0 x i8]* ), [0 x i8]* bitcast( [28 x i8]* getelementptr( [28 x i8]* @S.54 )  to [0 x i8]* ), [0 x i8]* bitcast( [37 x i8]* getelementptr( [37 x i8]* @S.55 )  to [0 x i8]* ), [0 x i8]* bitcast( [13 x i8]* getelementptr( [13 x i8]* @S.56 )  to [0 x i8]* ), [0 x i8]* bitcast( [33 x i8]* getelementptr( [33 x i8]* @S.57 )  to [0 x i8]* ), [0 x i8]* bitcast( [33 x i8]* getelementptr( [33 x i8]* @S.58 )  to [0 x i8]* ), [0 x i8]* bitcast( [41 x i8]* getelementptr( [41 x i8]* @S.59 )  to [0 x i8]* ), [0 x i8]* bitcast( [25 x i8]* getelementptr( [25 x i8]* @S.60 )  to [0 x i8]* ), [0 x i8]* bitcast( [21 x i8]* getelementptr( [21 x i8]* @S.61 )  to [0 x i8]* ), [0 x i8]* bitcast( [34 x i8]* getelementptr( [34 x i8]* @S.62 )  to [0 x i8]* ), [0 x i8]* bitcast( [29 x i8]* getelementptr( [29 x i8]* @S.63 )  to [0 x i8]* ), [0 x i8]* bitcast( [29 x i8]* getelementptr( [29 x i8]* @S.64 )  to [0 x i8]* ), [0 x i8]* bitcast( [14 x i8]* getelementptr( [14 x i8]* @S.65 )  to [0 x i8]* ), [0 x i8]* bitcast( [13 x i8]* getelementptr( [13 x i8]* @S.66 )  to [0 x i8]* ), [0 x i8]* bitcast( [33 x i8]* getelementptr( [33 x i8]* @S.67 )  to [0 x i8]* ), [0 x i8]* bitcast( [20 x i8]* getelementptr( [20 x i8]* @S.68 )  to [0 x i8]* ), [0 x i8]* bitcast( [13 x i8]* getelementptr( [13 x i8]* @S.69 )  to [0 x i8]* ), [0 x i8]* bitcast( [35 x i8]* getelementptr( [35 x i8]* @S.70 )  to [0 x i8]* ), [0 x i8]* bitcast( [27 x i8]* getelementptr( [27 x i8]* @S.71 )  to [0 x i8]* ), [0 x i8]* bitcast( [33 x i8]* getelementptr( [33 x i8]* @S.72 )  to [0 x i8]* ), [0 x i8]* bitcast( [41 x i8]* getelementptr( [41 x i8]* @S.73 )  to [0 x i8]* ), [0 x i8]* bitcast( [37 x i8]* getelementptr( [37 x i8]* @S.74 )  to [0 x i8]* ), [0 x i8]* bitcast( [49 x i8]* getelementptr( [49 x i8]* @S.75 )  to [0 x i8]* ), [0 x i8]* bitcast( [22 x i8]* getelementptr( [22 x i8]* @S.76 )  to [0 x i8]* ), [0 x i8]* bitcast( [32 x i8]* getelementptr( [32 x i8]* @S.77 )  to [0 x i8]* ), [0 x i8]* bitcast( [43 x i8]* getelementptr( [43 x i8]* @S.78 )  to [0 x i8]* ), [0 x i8]* bitcast( [22 x i8]* getelementptr( [22 x i8]* @S.79 )  to [0 x i8]* ), [0 x i8]* bitcast( [29 x i8]* getelementptr( [29 x i8]* @S.80 )  to [0 x i8]* ), [0 x i8]* bitcast( [35 x i8]* getelementptr( [35 x i8]* @S.81 )  to [0 x i8]* ), [0 x i8]* bitcast( [28 x i8]* getelementptr( [28 x i8]* @S.82 )  to [0 x i8]* ), [0 x i8]* bitcast( [30 x i8]* getelementptr( [30 x i8]* @S.83 )  to [0 x i8]* ), [0 x i8]* bitcast( [22 x i8]* getelementptr( [22 x i8]* @S.84 )  to [0 x i8]* ), [0 x i8]* bitcast( [24 x i8]* getelementptr( [24 x i8]* @S.85 )  to [0 x i8]* ), [0 x i8]* bitcast( [23 x i8]* getelementptr( [23 x i8]* @S.86 )  to [0 x i8]* ), [0 x i8]* bitcast( [44 x i8]* getelementptr( [44 x i8]* @S.87 )  to [0 x i8]* ), [0 x i8]* bitcast( [44 x i8]* getelementptr( [44 x i8]* @S.88 )  to [0 x i8]* ), [0 x i8]* bitcast( [47 x i8]* getelementptr( [47 x i8]* @S.89 )  to [0 x i8]* ), [0 x i8]* bitcast( [31 x i8]* getelementptr( [31 x i8]* @S.90 )  to [0 x i8]* ), [0 x i8]* bitcast( [24 x i8]* getelementptr( [24 x i8]* @S.91 )  to [0 x i8]* ), [0 x i8]* bitcast( [26 x i8]* getelementptr( [26 x i8]* @S.92 )  to [0 x i8]* ) ], align 4
@S.94 = internal constant [1 x i8] c"\00"
@S.95 = internal constant [10 x i8] c"ENDOFFILE\00"
@S.96 = internal constant [2 x i8] c".\00"
@S.97 = internal constant [2 x i8] c":\00"
@S.98 = internal constant [2 x i8] c";\00"
@S.99 = internal constant [2 x i8] c",\00"
@S.100 = internal constant [3 x i8] c"..\00"
@S.101 = internal constant [2 x i8] c"@\00"
@S.102 = internal constant [2 x i8] c"?\00"
@S.103 = internal constant [2 x i8] c"=\00"
@S.104 = internal constant [3 x i8] c"+=\00"
@S.105 = internal constant [3 x i8] c"-=\00"
@S.106 = internal constant [2 x i8] c"!\00"
@S.107 = internal constant [2 x i8] c"~\00"
@S.108 = internal constant [2 x i8] c"+\00"
@S.109 = internal constant [2 x i8] c"-\00"
@S.110 = internal constant [2 x i8] c"|\00"
@S.111 = internal constant [2 x i8] c"^\00"
@S.112 = internal constant [2 x i8] c"*\00"
@S.113 = internal constant [2 x i8] c"/\00"
@S.114 = internal constant [2 x i8] c"%\00"
@S.115 = internal constant [3 x i8] c"<<\00"
@S.116 = internal constant [3 x i8] c">>\00"
@S.117 = internal constant [2 x i8] c"&\00"
@S.118 = internal constant [3 x i8] c"==\00"
@S.119 = internal constant [3 x i8] c"!=\00"
@S.120 = internal constant [2 x i8] c"<\00"
@S.121 = internal constant [2 x i8] c">\00"
@S.122 = internal constant [3 x i8] c"<=\00"
@S.123 = internal constant [3 x i8] c">=\00"
@S.124 = internal constant [3 x i8] c"&&\00"
@S.125 = internal constant [3 x i8] c"||\00"
@S.126 = internal constant [2 x i8] c"(\00"
@S.127 = internal constant [2 x i8] c")\00"
@S.128 = internal constant [2 x i8] c"[\00"
@S.129 = internal constant [2 x i8] c"]\00"
@S.130 = internal constant [2 x i8] c"{\00"
@S.131 = internal constant [2 x i8] c"}\00"
@S.132 = internal constant [7 x i8] c"NUMBER\00"
@S.133 = internal constant [5 x i8] c"FNUM\00"
@S.134 = internal constant [7 x i8] c"STRING\00"
@S.135 = internal constant [6 x i8] c"IDENT\00"
@S.136 = internal constant [5 x i8] c"type\00"
@S.137 = internal constant [4 x i8] c"var\00"
@S.138 = internal constant [6 x i8] c"const\00"
@S.139 = internal constant [7 x i8] c"import\00"
@S.140 = internal constant [6 x i8] c"alias\00"
@S.141 = internal constant [6 x i8] c"error\00"
@S.142 = internal constant [5 x i8] c"proc\00"
@S.143 = internal constant [8 x i8] c"package\00"
@S.144 = internal constant [4 x i8] c"asm\00"
@S.145 = internal constant [5 x i8] c"call\00"
@S.146 = internal constant [7 x i8] c"return\00"
@S.147 = internal constant [3 x i8] c"if\00"
@S.148 = internal constant [6 x i8] c"while\00"
@S.149 = internal constant [4 x i8] c"for\00"
@S.150 = internal constant [5 x i8] c"loop\00"
@S.151 = internal constant [5 x i8] c"exit\00"
@S.152 = internal constant [5 x i8] c"then\00"
@S.153 = internal constant [5 x i8] c"elif\00"
@S.154 = internal constant [5 x i8] c"else\00"
@S.155 = internal constant [3 x i8] c"is\00"
@S.156 = internal constant [3 x i8] c"do\00"
@S.157 = internal constant [5 x i8] c"with\00"
@S.158 = internal constant [3 x i8] c"as\00"
@S.159 = internal constant [3 x i8] c"in\00"
@S.160 = internal constant [5 x i8] c"from\00"
@S.161 = internal constant [3 x i8] c"to\00"
@S.162 = internal constant [3 x i8] c"by\00"
@S.163 = internal constant [7 x i8] c"packed\00"
@S.164 = internal constant [6 x i8] c"nopad\00"
@S.165 = internal constant [4 x i8] c"lsb\00"
@S.166 = internal constant [4 x i8] c"msb\00"
@S.167 = internal constant [3 x i8] c"le\00"
@S.168 = internal constant [3 x i8] c"be\00"
@S.169 = internal constant [3 x i8] c"ro\00"
@S.170 = internal constant [3 x i8] c"wo\00"
@S.171 = internal constant [3 x i8] c"in\00"
@S.172 = internal constant [4 x i8] c"out\00"
@S.173 = internal constant [3 x i8] c"at\00"
@S.174 = internal constant [9 x i8] c"external\00"
@S.175 = internal constant [7 x i8] c"global\00"
@S.176 = internal constant [8 x i8] c"section\00"
@S.177 = internal constant [6 x i8] c"align\00"
@S.178 = internal constant [7 x i8] c"inline\00"
@S.179 = internal constant [9 x i8] c"noinline\00"
@S.180 = internal constant [10 x i8] c"interrupt\00"
@S.181 = internal constant [5 x i8] c"weak\00"
@S.182 = internal constant [4 x i8] c"min\00"
@S.183 = internal constant [4 x i8] c"max\00"
@S.184 = internal constant [5 x i8] c"bits\00"
@S.185 = internal constant [5 x i8] c"size\00"
@S.186 = internal constant [4 x i8] c"len\00"
@lex_keywords = internal constant [93 x [0 x i8]*] [ [0 x i8]* bitcast( [1 x i8]* getelementptr( [1 x i8]* @S.94 )  to [0 x i8]* ), [0 x i8]* bitcast( [10 x i8]* getelementptr( [10 x i8]* @S.95 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.96 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.97 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.98 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.99 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.100 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.101 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.102 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.103 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.104 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.105 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.106 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.107 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.108 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.109 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.110 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.111 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.112 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.113 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.114 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.115 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.116 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.117 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.118 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.119 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.120 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.121 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.122 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.123 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.124 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.125 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.126 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.127 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.128 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.129 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.130 )  to [0 x i8]* ), [0 x i8]* bitcast( [2 x i8]* getelementptr( [2 x i8]* @S.131 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.132 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.133 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.134 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.135 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.136 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.137 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.138 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.139 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.140 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.141 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.142 )  to [0 x i8]* ), [0 x i8]* bitcast( [8 x i8]* getelementptr( [8 x i8]* @S.143 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.144 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.145 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.146 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.147 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.148 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.149 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.150 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.151 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.152 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.153 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.154 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.155 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.156 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.157 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.158 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.159 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.160 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.161 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.162 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.163 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.164 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.165 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.166 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.167 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.168 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.169 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.170 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.171 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.172 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.173 )  to [0 x i8]* ), [0 x i8]* bitcast( [9 x i8]* getelementptr( [9 x i8]* @S.174 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.175 )  to [0 x i8]* ), [0 x i8]* bitcast( [8 x i8]* getelementptr( [8 x i8]* @S.176 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.177 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.178 )  to [0 x i8]* ), [0 x i8]* bitcast( [9 x i8]* getelementptr( [9 x i8]* @S.179 )  to [0 x i8]* ), [0 x i8]* bitcast( [10 x i8]* getelementptr( [10 x i8]* @S.180 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.181 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.182 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.183 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.184 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.185 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.186 )  to [0 x i8]* ) ], align 4
@lex_StringMax = internal constant i32 4095, align 4
@lex_IdentMax = internal constant i32 255, align 4
@lex_BufSize = internal constant i32 4096, align 4
@lex_PathMax = internal constant i32 1024, align 4
@lex_NameMax = internal constant i32 256, align 4
@lex_LinesMax = internal constant i32 65535, align 4
@lex_ErrorMax = internal constant i32 10, align 4
%lex.SearchPathEntry = type {%lex.SearchPathEntry*, [0 x i8]}
@lex_pathhead = internal global %lex.SearchPathEntry* zeroinitializer, align 4
@lex_pathtail = internal global %lex.SearchPathEntry* zeroinitializer, align 4
%lex.FileListEntry = type {%lex.FileListEntry*, [0 x i8]}
@lex_filehead = internal global %lex.FileListEntry* zeroinitializer, align 4
@lex_filetail = internal global %lex.FileListEntry* zeroinitializer, align 4
%lex.FileContext = type {%lex.FileContext*, %lex.SearchPathEntry*, %lex.FileListEntry*, i32, i16, i16, i16, [4096 x i8]}
@lex_f = internal global %lex.FileContext* zeroinitializer, align 4
@lex_ErrorCount = internal global i8 0, align 1
@lex_Token = internal global i8 0, align 1
@lex_Ident = internal global [256 x i8] zeroinitializer, align 1
@lex_Number = internal global i64 0, align 4
@lex_Scale = internal global i16 0, align 2
@lex_StringLen = internal global i16 0, align 2
@lex_StringBuf = internal global [4096 x i8] zeroinitializer, align 1
@lex_saves = internal global i8 0, align 1
define internal zeroext i16 @lex_Lineno() nounwind {
L.0:
	%rv.0 = alloca i16
	%0 = load %lex.FileContext** @lex_f
	%1 = icmp eq %lex.FileContext* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	store i16 0, i16* %rv.0
	br label %return
L.1:
	%2 = load %lex.FileContext** @lex_f
	%3 = getelementptr %lex.FileContext* %2, i32 0, i32 4
	%4 = load i16* %3
	store i16 %4, i16* %rv.0
	br label %return
return:
	%5 = load i16* %rv.0
	ret i16 %5
}
@S.187 = internal constant [3 x i8] c": \00"
@S.188 = internal constant [28 x i8] c"\0AToo many errors, quiting.\0A\00"
declare external void @exit(i32)
@S.189 = internal constant [8 x i8] c"Error: \00"
@S.190 = internal constant [10 x i8] c"Warning: \00"
define internal void @lex_ErrorSub(i8 zeroext %error$) nounwind {
L.0:
	%error = alloca i8
	store i8 %error$, i8* %error
	%0 = load %lex.FileContext** @lex_f
	%1 = getelementptr %lex.FileContext* %0, i32 0, i32 1
	%2 = load %lex.SearchPathEntry** %1
	%3 = icmp ne %lex.SearchPathEntry* %2, null
	br i1 %3, label %L.2, label %L.1
L.2:
	%4 = load %lex.FileContext** @lex_f
	%5 = getelementptr %lex.FileContext* %4, i32 0, i32 1
	%6 = load %lex.SearchPathEntry** %5
	%7 = getelementptr %lex.SearchPathEntry* %6, i32 0, i32 1
	%8 = getelementptr [0 x i8]* %7
	%9 = bitcast [0 x i8]* %8 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %9)
	call void @sys_fildes_chr(i32 2, i8 47)
	br label %L.1
L.1:
	%10 = load %lex.FileContext** @lex_f
	%11 = getelementptr %lex.FileContext* %10, i32 0, i32 2
	%12 = load %lex.FileListEntry** %11
	%13 = getelementptr %lex.FileListEntry* %12, i32 0, i32 1
	%14 = getelementptr [0 x i8]* %13
	%15 = bitcast [0 x i8]* %14 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %15)
	call void @sys_fildes_chr(i32 2, i8 58)
	%16 = call i16 @lex_Lineno()
	%17 = zext i16 %16 to i32
	call void @sys_fildes_uint(i32 2, i32 %17)
	%18 = getelementptr [3 x i8]* @S.187
	%19 = bitcast [3 x i8]* %18 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %19)
	%20 = load i8* %error
	%21 = icmp uge i8 %20, 7
	br i1 %21, label %L.4, label %L.5
L.4:
	%22 = load i8* @lex_ErrorCount
	%23 = add i8 %22, 1
	store i8 %23, i8* @lex_ErrorCount
	%24 = load i8* @lex_ErrorCount
	%25 = icmp uge i8 %24, 10
	br i1 %25, label %L.7, label %L.6
L.7:
	%26 = getelementptr [28 x i8]* @S.188
	%27 = bitcast [28 x i8]* %26 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %27)
	call void @exit(i32 1)
	br label %L.6
L.6:
	%28 = getelementptr [8 x i8]* @S.189
	%29 = bitcast [8 x i8]* %28 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %29)
	br label %L.3
L.5:
	%30 = getelementptr [10 x i8]* @S.190
	%31 = bitcast [10 x i8]* %30 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %31)
	br label %L.3
L.3:
	%32 = load i8* %error
	%33 = zext i8 %32 to i32
	%34 = getelementptr [87 x [0 x i8]*]* @lex_ErrMsg, i32 0, i32 %33
	%35 = load [0 x i8]** %34
	%36 = bitcast [0 x i8]* %35 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %36)
	br label %return
return:
	ret void
}
define internal void @lex_Error(i8 zeroext %error$) nounwind {
L.0:
	%error = alloca i8
	store i8 %error$, i8* %error
	%0 = load i8* %error
	call void @lex_ErrorSub(i8 %0)
	call void @sys_fildes_nl(i32 2)
	br label %return
return:
	ret void
}
define internal void @lex_ErrorS(i8 zeroext %error$, [0 x i8]* %msg$) nounwind {
L.0:
	%error = alloca i8
	%msg = alloca [0 x i8]*
	store i8 %error$, i8* %error
	store [0 x i8]* %msg$, [0 x i8]** %msg
	%0 = load i8* %error
	call void @lex_ErrorSub(i8 %0)
	%1 = load [0 x i8]** %msg
	%2 = bitcast [0 x i8]* %1 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %2)
	call void @sys_fildes_nl(i32 2)
	br label %return
return:
	ret void
}
define internal void @lex_ErrorI(i8 zeroext %error$, [0 x i8]* %ident$) nounwind {
L.0:
	%error = alloca i8
	%ident = alloca [0 x i8]*
	store i8 %error$, i8* %error
	store [0 x i8]* %ident$, [0 x i8]** %ident
	%0 = load i8* %error
	call void @lex_ErrorSub(i8 %0)
	%1 = load [0 x i8]** %ident
	%2 = bitcast [0 x i8]* %1 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %2)
	call void @sys_fildes_nl(i32 2)
	br label %return
return:
	ret void
}
define internal void @lex_ErrorT(i8 zeroext %error$, i8 zeroext %tok$) nounwind {
L.0:
	%error = alloca i8
	%tok = alloca i8
	store i8 %error$, i8* %error
	store i8 %tok$, i8* %tok
	%0 = load i8* %error
	call void @lex_ErrorSub(i8 %0)
	call void @sys_fildes_chr(i32 2, i8 39)
	%1 = load i8* %tok
	%2 = zext i8 %1 to i32
	%3 = getelementptr [93 x [0 x i8]*]* @lex_keywords, i32 0, i32 %2
	%4 = load [0 x i8]** %3
	%5 = bitcast [0 x i8]* %4 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %5)
	call void @sys_fildes_chr(i32 2, i8 39)
	call void @sys_fildes_nl(i32 2)
	br label %return
return:
	ret void
}
define internal %lex.SearchPathEntry* @lex_SearchPathAdd([0 x i8]* %newpath$, i8 zeroext %prepend$) nounwind {
L.0:
	%rv.0 = alloca %lex.SearchPathEntry*
	%newpath = alloca [0 x i8]*
	%prepend = alloca i8
	store [0 x i8]* %newpath$, [0 x i8]** %newpath
	store i8 %prepend$, i8* %prepend
	%np = alloca %lex.SearchPathEntry*
	%len = alloca i32
	%0 = load [0 x i8]** %newpath
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = call i32 @zstr_len([0 x i8]* %1, i32 1024)
	store i32 %2, i32* %len
	%3 = load i32* %len
	%4 = add i32 4, %3
	%5 = add i32 %4, 1
	%6 = call [0 x i8]* @malloc(i32 %5)
	%7 = bitcast [0 x i8]* %6 to %lex.SearchPathEntry*
	store %lex.SearchPathEntry* %7, %lex.SearchPathEntry** %np
	%8 = load %lex.SearchPathEntry** %np
	%9 = getelementptr %lex.SearchPathEntry* %8, i32 0, i32 1
	%10 = getelementptr [0 x i8]* %9
	%11 = bitcast [0 x i8]* %10 to [0 x i8]*
	%12 = load [0 x i8]** %newpath
	%13 = bitcast [0 x i8]* %12 to [0 x i8]*
	%14 = load i32* %len
	%15 = add i32 %14, 1
	call void @zstr_copy([0 x i8]* %11, [0 x i8]* %13, i32 %15)
	%16 = load %lex.SearchPathEntry** @lex_pathhead
	%17 = icmp eq %lex.SearchPathEntry* %16, null
	br i1 %17, label %L.2, label %L.3
L.2:
	%18 = load %lex.SearchPathEntry** %np
	%19 = getelementptr %lex.SearchPathEntry* %18, i32 0, i32 0
	store %lex.SearchPathEntry* null, %lex.SearchPathEntry** %19
	%20 = load %lex.SearchPathEntry** %np
	store %lex.SearchPathEntry* %20, %lex.SearchPathEntry** @lex_pathhead
	%21 = load %lex.SearchPathEntry** %np
	store %lex.SearchPathEntry* %21, %lex.SearchPathEntry** @lex_pathtail
	br label %L.1
L.3:
	%22 = load i8* %prepend
	%23 = icmp ne i8 %22, 0
	br i1 %23, label %L.5, label %L.6
L.5:
	%24 = load %lex.SearchPathEntry** @lex_pathhead
	%25 = bitcast %lex.SearchPathEntry* %24 to %lex.SearchPathEntry*
	%26 = load %lex.SearchPathEntry** %np
	%27 = getelementptr %lex.SearchPathEntry* %26, i32 0, i32 0
	store %lex.SearchPathEntry* %25, %lex.SearchPathEntry** %27
	%28 = load %lex.SearchPathEntry** %np
	store %lex.SearchPathEntry* %28, %lex.SearchPathEntry** @lex_pathhead
	br label %L.4
L.6:
	%29 = load %lex.SearchPathEntry** %np
	%30 = getelementptr %lex.SearchPathEntry* %29, i32 0, i32 0
	store %lex.SearchPathEntry* null, %lex.SearchPathEntry** %30
	%31 = load %lex.SearchPathEntry** %np
	%32 = bitcast %lex.SearchPathEntry* %31 to %lex.SearchPathEntry*
	%33 = load %lex.SearchPathEntry** @lex_pathtail
	%34 = getelementptr %lex.SearchPathEntry* %33, i32 0, i32 0
	store %lex.SearchPathEntry* %32, %lex.SearchPathEntry** %34
	%35 = load %lex.SearchPathEntry** %np
	store %lex.SearchPathEntry* %35, %lex.SearchPathEntry** @lex_pathtail
	br label %L.4
L.4:
	br label %L.1
L.1:
	%36 = load %lex.SearchPathEntry** %np
	store %lex.SearchPathEntry* %36, %lex.SearchPathEntry** %rv.0
	br label %return
return:
	%37 = load %lex.SearchPathEntry** %rv.0
	ret %lex.SearchPathEntry* %37
}
@S.191 = internal constant [14 x i8] c"Search path \22\00"
@S.192 = internal constant [3 x i8] c"\22\0A\00"
define internal void @lex_SearchPathPrint() nounwind {
L.0:
	%pp = alloca %lex.SearchPathEntry*
	%0 = getelementptr [14 x i8]* @S.191
	%1 = bitcast [14 x i8]* %0 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %1)
	%2 = load %lex.SearchPathEntry** @lex_pathhead
	store %lex.SearchPathEntry* %2, %lex.SearchPathEntry** %pp
	br label %L.1
L.1:
	%3 = load %lex.SearchPathEntry** %pp
	%4 = icmp ne %lex.SearchPathEntry* %3, null
	%5 = xor i1 %4, true
	br i1 %5, label %L.2, label %L.3
L.3:
	%6 = load %lex.SearchPathEntry** %pp
	%7 = getelementptr %lex.SearchPathEntry* %6, i32 0, i32 1
	%8 = getelementptr [0 x i8]* %7
	%9 = bitcast [0 x i8]* %8 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %9)
	call void @sys_fildes_chr(i32 2, i8 58)
	%10 = load %lex.SearchPathEntry** %pp
	%11 = getelementptr %lex.SearchPathEntry* %10, i32 0, i32 0
	%12 = load %lex.SearchPathEntry** %11
	%13 = bitcast %lex.SearchPathEntry* %12 to %lex.SearchPathEntry*
	store %lex.SearchPathEntry* %13, %lex.SearchPathEntry** %pp
	br label %L.1
L.2:
	%14 = getelementptr [3 x i8]* @S.192
	%15 = bitcast [3 x i8]* %14 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %15)
	br label %return
return:
	ret void
}
define internal %lex.FileListEntry* @lex_FileListAdd([0 x i8]* %filename$) nounwind {
L.0:
	%rv.0 = alloca %lex.FileListEntry*
	%filename = alloca [0 x i8]*
	store [0 x i8]* %filename$, [0 x i8]** %filename
	%fp = alloca %lex.FileListEntry*
	%len = alloca i32
	%0 = load [0 x i8]** %filename
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = call i32 @zstr_len([0 x i8]* %1, i32 256)
	store i32 %2, i32* %len
	%3 = load i32* %len
	%4 = add i32 4, %3
	%5 = add i32 %4, 1
	%6 = call [0 x i8]* @malloc(i32 %5)
	%7 = bitcast [0 x i8]* %6 to %lex.FileListEntry*
	store %lex.FileListEntry* %7, %lex.FileListEntry** %fp
	%8 = load %lex.FileListEntry** %fp
	%9 = getelementptr %lex.FileListEntry* %8, i32 0, i32 1
	%10 = getelementptr [0 x i8]* %9
	%11 = bitcast [0 x i8]* %10 to [0 x i8]*
	%12 = load [0 x i8]** %filename
	%13 = bitcast [0 x i8]* %12 to [0 x i8]*
	%14 = load i32* %len
	%15 = add i32 %14, 1
	call void @zstr_copy([0 x i8]* %11, [0 x i8]* %13, i32 %15)
	%16 = load %lex.FileListEntry** @lex_filehead
	%17 = icmp eq %lex.FileListEntry* %16, null
	br i1 %17, label %L.2, label %L.3
L.2:
	%18 = load %lex.FileListEntry** %fp
	store %lex.FileListEntry* %18, %lex.FileListEntry** @lex_filehead
	br label %L.1
L.3:
	%19 = load %lex.FileListEntry** %fp
	%20 = bitcast %lex.FileListEntry* %19 to %lex.FileListEntry*
	%21 = load %lex.FileListEntry** @lex_filetail
	%22 = getelementptr %lex.FileListEntry* %21, i32 0, i32 0
	store %lex.FileListEntry* %20, %lex.FileListEntry** %22
	br label %L.1
L.1:
	%23 = load %lex.FileListEntry** %fp
	store %lex.FileListEntry* %23, %lex.FileListEntry** @lex_filetail
	%24 = load %lex.FileListEntry** %fp
	store %lex.FileListEntry* %24, %lex.FileListEntry** %rv.0
	br label %return
return:
	%25 = load %lex.FileListEntry** %rv.0
	ret %lex.FileListEntry* %25
}
@S.193 = internal constant [2 x i8] c"/\00"
@S.194 = internal constant [5 x i8] c".esl\00"
declare external i32 @open([0 x i8]*, i32, i32)
@S.195 = internal constant [2 x i8] c".\00"
@S.196 = internal constant [13 x i8] c"Open  file \22\00"
@S.197 = internal constant [3 x i8] c"\22\0A\00"
@S.198 = internal constant [5 x i8] c" \5C\0A \00"
define internal zeroext i8 @lex_FileOpen([0 x i8]* %filename$) nounwind {
L.0:
	%rv.0 = alloca i8
	%filename = alloca [0 x i8]*
	store [0 x i8]* %filename$, [0 x i8]** %filename
	%nf = alloca %lex.FileContext*
	%fd = alloca i32
	%pp = alloca %lex.SearchPathEntry*
	%fp = alloca %lex.FileListEntry*
	%i = alloca i32
	%pathbuf = alloca [1024 x i8]
	%0 = load %lex.FileContext** @lex_f
	%1 = icmp ne %lex.FileContext* %0, null
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load %lex.SearchPathEntry** @lex_pathhead
	store %lex.SearchPathEntry* %2, %lex.SearchPathEntry** %pp
	br label %L.4
L.4:
	%3 = load %lex.SearchPathEntry** %pp
	%4 = icmp ne %lex.SearchPathEntry* %3, null
	%5 = xor i1 %4, true
	br i1 %5, label %L.5, label %L.6
L.6:
	%6 = bitcast [1024 x i8]* %pathbuf to [0 x i8]*
	%7 = load %lex.SearchPathEntry** %pp
	%8 = getelementptr %lex.SearchPathEntry* %7, i32 0, i32 1
	%9 = getelementptr [0 x i8]* %8
	%10 = bitcast [0 x i8]* %9 to [0 x i8]*
	call void @zstr_copy([0 x i8]* %6, [0 x i8]* %10, i32 1024)
	%11 = bitcast [1024 x i8]* %pathbuf to [0 x i8]*
	%12 = getelementptr [2 x i8]* @S.193
	%13 = bitcast [2 x i8]* %12 to [0 x i8]*
	call void @zstr_cat([0 x i8]* %11, [0 x i8]* %13, i32 1024)
	%14 = bitcast [1024 x i8]* %pathbuf to [0 x i8]*
	%15 = call i32 @zstr_len([0 x i8]* %14, i32 1024)
	store i32 %15, i32* %i
	%16 = bitcast [1024 x i8]* %pathbuf to [0 x i8]*
	%17 = load [0 x i8]** %filename
	%18 = bitcast [0 x i8]* %17 to [0 x i8]*
	call void @zstr_cat([0 x i8]* %16, [0 x i8]* %18, i32 1024)
	%19 = bitcast [1024 x i8]* %pathbuf to [0 x i8]*
	%20 = getelementptr [5 x i8]* @S.194
	%21 = bitcast [5 x i8]* %20 to [0 x i8]*
	call void @zstr_cat([0 x i8]* %19, [0 x i8]* %21, i32 1024)
	%22 = bitcast [1024 x i8]* %pathbuf to [0 x i8]*
	%23 = call i32 @open([0 x i8]* %22, i32 0, i32 0)
	store i32 %23, i32* %fd
	%24 = load i32* %fd
	%25 = icmp sge i32 %24, 0
	br i1 %25, label %L.5, label %L.7
L.7:
	%26 = load %lex.SearchPathEntry** %pp
	%27 = getelementptr %lex.SearchPathEntry* %26, i32 0, i32 0
	%28 = load %lex.SearchPathEntry** %27
	%29 = bitcast %lex.SearchPathEntry* %28 to %lex.SearchPathEntry*
	store %lex.SearchPathEntry* %29, %lex.SearchPathEntry** %pp
	br label %L.4
L.5:
	br label %L.1
L.3:
	%30 = bitcast [1024 x i8]* %pathbuf to [0 x i8]*
	%31 = load [0 x i8]** %filename
	%32 = bitcast [0 x i8]* %31 to [0 x i8]*
	call void @zstr_copy([0 x i8]* %30, [0 x i8]* %32, i32 1024)
	%33 = bitcast [1024 x i8]* %pathbuf to [0 x i8]*
	%34 = call i32 @open([0 x i8]* %33, i32 0, i32 0)
	store i32 %34, i32* %fd
	%35 = bitcast [1024 x i8]* %pathbuf to [0 x i8]*
	%36 = call i32 @zstr_rfind([0 x i8]* %35, i8 47, i32 1024)
	store i32 %36, i32* %i
	%37 = load i32* %i
	%38 = icmp eq i32 %37, 1024
	br i1 %38, label %L.9, label %L.10
L.9:
	%39 = getelementptr [2 x i8]* @S.195
	%40 = bitcast [2 x i8]* %39 to [0 x i8]*
	%41 = call %lex.SearchPathEntry* @lex_SearchPathAdd([0 x i8]* %40, i8 1)
	store %lex.SearchPathEntry* %41, %lex.SearchPathEntry** %pp
	store i32 0, i32* %i
	br label %L.8
L.10:
	%42 = load i32* %i
	%43 = getelementptr [1024 x i8]* %pathbuf, i32 0, i32 %42
	store i8 0, i8* %43
	%44 = bitcast [1024 x i8]* %pathbuf to [0 x i8]*
	%45 = call %lex.SearchPathEntry* @lex_SearchPathAdd([0 x i8]* %44, i8 1)
	store %lex.SearchPathEntry* %45, %lex.SearchPathEntry** %pp
	%46 = load i32* %i
	%47 = add i32 %46, 1
	store i32 %47, i32* %i
	br label %L.8
L.8:
	br label %L.1
L.1:
	%48 = load i32* %fd
	%49 = icmp slt i32 %48, 0
	br i1 %49, label %L.12, label %L.11
L.12:
	store i8 0, i8* %rv.0
	br label %return
L.11:
	%50 = load [0 x i8]** %filename
	%51 = bitcast [0 x i8]* %50 to [0 x i8]*
	%52 = call %lex.FileListEntry* @lex_FileListAdd([0 x i8]* %51)
	store %lex.FileListEntry* %52, %lex.FileListEntry** %fp
	%53 = getelementptr %A.2* @debug, i32 0, i32 2
	%54 = load i8* %53
	%55 = icmp ne i8 %54, 0
	br i1 %55, label %L.14, label %L.13
L.14:
	%56 = getelementptr [13 x i8]* @S.196
	%57 = bitcast [13 x i8]* %56 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %57)
	%58 = load %lex.SearchPathEntry** %pp
	%59 = icmp ne %lex.SearchPathEntry* %58, null
	br i1 %59, label %L.16, label %L.15
L.16:
	%60 = load %lex.SearchPathEntry** %pp
	%61 = getelementptr %lex.SearchPathEntry* %60, i32 0, i32 1
	%62 = getelementptr [0 x i8]* %61
	%63 = bitcast [0 x i8]* %62 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %63)
	call void @sys_fildes_chr(i32 2, i8 47)
	br label %L.15
L.15:
	%64 = load i32* %i
	%65 = getelementptr [1024 x i8]* %pathbuf, i32 0, i32 %64
	%66 = bitcast i8* %65 to [1024 x i8]*
	%67 = getelementptr [1024 x i8]* %66
	%68 = bitcast [1024 x i8]* %67 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %68)
	%69 = getelementptr [3 x i8]* @S.197
	%70 = bitcast [3 x i8]* %69 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %70)
	br label %L.13
L.13:
	%71 = getelementptr %A.3* @feature, i32 0, i32 2
	%72 = load i8* %71
	%73 = icmp ne i8 %72, 0
	br i1 %73, label %L.18, label %L.17
L.18:
	%74 = getelementptr [5 x i8]* @S.198
	%75 = bitcast [5 x i8]* %74 to [0 x i8]*
	call void @sys_fildes_str(i32 1, [0 x i8]* %75)
	%76 = load %lex.SearchPathEntry** %pp
	%77 = icmp ne %lex.SearchPathEntry* %76, null
	br i1 %77, label %L.19, label %L.20
L.19:
	%78 = load %lex.SearchPathEntry** %pp
	%79 = getelementptr %lex.SearchPathEntry* %78, i32 0, i32 1
	%80 = getelementptr [0 x i8]* %79, i32 0, i32 0
	%81 = load i8* %80
	%82 = icmp ne i8 %81, 46
	br i1 %82, label %L.22, label %L.21
L.21:
	%83 = load %lex.SearchPathEntry** %pp
	%84 = getelementptr %lex.SearchPathEntry* %83, i32 0, i32 1
	%85 = getelementptr [0 x i8]* %84, i32 0, i32 1
	%86 = load i8* %85
	%87 = icmp ne i8 %86, 0
	br label %L.22
L.22:
	%88 = phi i1 [ true, %L.19 ], [ %87, %L.21 ]
	br label %L.20
L.20:
	%89 = phi i1 [ false, %L.18 ], [ %88, %L.22 ]
	br i1 %89, label %L.24, label %L.23
L.24:
	%90 = load %lex.SearchPathEntry** %pp
	%91 = getelementptr %lex.SearchPathEntry* %90, i32 0, i32 1
	%92 = getelementptr [0 x i8]* %91
	%93 = bitcast [0 x i8]* %92 to [0 x i8]*
	call void @sys_fildes_str(i32 1, [0 x i8]* %93)
	call void @sys_fildes_chr(i32 1, i8 47)
	br label %L.23
L.23:
	%94 = load i32* %i
	%95 = getelementptr [1024 x i8]* %pathbuf, i32 0, i32 %94
	%96 = bitcast i8* %95 to [1024 x i8]*
	%97 = getelementptr [1024 x i8]* %96
	%98 = bitcast [1024 x i8]* %97 to [0 x i8]*
	call void @sys_fildes_str(i32 1, [0 x i8]* %98)
	br label %L.17
L.17:
	%99 = call [0 x i8]* @malloc(i32 4120)
	%100 = bitcast [0 x i8]* %99 to %lex.FileContext*
	store %lex.FileContext* %100, %lex.FileContext** %nf
	%101 = load %lex.FileListEntry** %fp
	%102 = load %lex.FileContext** %nf
	%103 = getelementptr %lex.FileContext* %102, i32 0, i32 2
	store %lex.FileListEntry* %101, %lex.FileListEntry** %103
	%104 = load %lex.SearchPathEntry** %pp
	%105 = load %lex.FileContext** %nf
	%106 = getelementptr %lex.FileContext* %105, i32 0, i32 1
	store %lex.SearchPathEntry* %104, %lex.SearchPathEntry** %106
	%107 = load i32* %fd
	%108 = load %lex.FileContext** %nf
	%109 = getelementptr %lex.FileContext* %108, i32 0, i32 3
	store i32 %107, i32* %109
	%110 = load %lex.FileContext** %nf
	%111 = getelementptr %lex.FileContext* %110, i32 0, i32 4
	store i16 1, i16* %111
	%112 = load %lex.FileContext** %nf
	%113 = getelementptr %lex.FileContext* %112, i32 0, i32 5
	store i16 0, i16* %113
	%114 = load %lex.FileContext** %nf
	%115 = getelementptr %lex.FileContext* %114, i32 0, i32 6
	store i16 0, i16* %115
	%116 = load %lex.FileContext** @lex_f
	%117 = bitcast %lex.FileContext* %116 to %lex.FileContext*
	%118 = load %lex.FileContext** %nf
	%119 = getelementptr %lex.FileContext* %118, i32 0, i32 0
	store %lex.FileContext* %117, %lex.FileContext** %119
	%120 = load %lex.FileContext** %nf
	store %lex.FileContext* %120, %lex.FileContext** @lex_f
	store i8 1, i8* %rv.0
	br label %return
return:
	%121 = load i8* %rv.0
	ret i8 %121
}
define internal zeroext i8 @lex_FileCheck([0 x i8]* %filename$) nounwind {
L.0:
	%rv.0 = alloca i8
	%filename = alloca [0 x i8]*
	store [0 x i8]* %filename$, [0 x i8]** %filename
	%fp = alloca %lex.FileListEntry*
	%0 = load %lex.FileListEntry** @lex_filehead
	store %lex.FileListEntry* %0, %lex.FileListEntry** %fp
	br label %L.1
L.1:
	%1 = load %lex.FileListEntry** %fp
	%2 = icmp ne %lex.FileListEntry* %1, null
	%3 = xor i1 %2, true
	br i1 %3, label %L.2, label %L.3
L.3:
	%4 = load %lex.FileListEntry** %fp
	%5 = getelementptr %lex.FileListEntry* %4, i32 0, i32 1
	%6 = getelementptr [0 x i8]* %5
	%7 = bitcast [0 x i8]* %6 to [0 x i8]*
	%8 = load [0 x i8]** %filename
	%9 = bitcast [0 x i8]* %8 to [0 x i8]*
	%10 = call i8 @zstr_eq([0 x i8]* %7, [0 x i8]* %9, i32 256)
	%11 = icmp ne i8 %10, 0
	br i1 %11, label %L.5, label %L.4
L.5:
	store i8 0, i8* %rv.0
	br label %return
L.4:
	%12 = load %lex.FileListEntry** %fp
	%13 = getelementptr %lex.FileListEntry* %12, i32 0, i32 0
	%14 = load %lex.FileListEntry** %13
	%15 = bitcast %lex.FileListEntry* %14 to %lex.FileListEntry*
	store %lex.FileListEntry* %15, %lex.FileListEntry** %fp
	br label %L.1
L.2:
	%16 = load [0 x i8]** %filename
	%17 = bitcast [0 x i8]* %16 to [0 x i8]*
	%18 = call i8 @lex_FileOpen([0 x i8]* %17)
	%19 = icmp ne i8 %18, 0
	br i1 %19, label %L.7, label %L.6
L.7:
	store i8 1, i8* %rv.0
	br label %return
L.6:
	%20 = load [0 x i8]** %filename
	%21 = bitcast [0 x i8]* %20 to [0 x i8]*
	call void @lex_ErrorI(i8 73, [0 x i8]* %21)
	store i8 0, i8* %rv.0
	br label %return
return:
	%22 = load i8* %rv.0
	ret i8 %22
}
declare external void @close(i32)
@S.199 = internal constant [13 x i8] c"Close file \22\00"
@S.200 = internal constant [3 x i8] c"\22\0A\00"
define internal void @lex_FileClose() nounwind {
L.0:
	%of = alloca %lex.FileContext*
	%0 = load %lex.FileContext** @lex_f
	%1 = icmp ne %lex.FileContext* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load %lex.FileContext** @lex_f
	%3 = getelementptr %lex.FileContext* %2, i32 0, i32 3
	%4 = load i32* %3
	call void @close(i32 %4)
	%5 = getelementptr %A.2* @debug, i32 0, i32 2
	%6 = load i8* %5
	%7 = icmp ne i8 %6, 0
	br i1 %7, label %L.4, label %L.3
L.4:
	%8 = getelementptr [13 x i8]* @S.199
	%9 = bitcast [13 x i8]* %8 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %9)
	%10 = load %lex.FileContext** @lex_f
	%11 = getelementptr %lex.FileContext* %10, i32 0, i32 1
	%12 = load %lex.SearchPathEntry** %11
	%13 = icmp ne %lex.SearchPathEntry* %12, null
	br i1 %13, label %L.6, label %L.5
L.6:
	%14 = load %lex.FileContext** @lex_f
	%15 = getelementptr %lex.FileContext* %14, i32 0, i32 1
	%16 = load %lex.SearchPathEntry** %15
	%17 = getelementptr %lex.SearchPathEntry* %16, i32 0, i32 1
	%18 = getelementptr [0 x i8]* %17
	%19 = bitcast [0 x i8]* %18 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %19)
	call void @sys_fildes_chr(i32 2, i8 47)
	br label %L.5
L.5:
	%20 = load %lex.FileContext** @lex_f
	%21 = getelementptr %lex.FileContext* %20, i32 0, i32 2
	%22 = load %lex.FileListEntry** %21
	%23 = getelementptr %lex.FileListEntry* %22, i32 0, i32 1
	%24 = getelementptr [0 x i8]* %23
	%25 = bitcast [0 x i8]* %24 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %25)
	%26 = getelementptr [3 x i8]* @S.200
	%27 = bitcast [3 x i8]* %26 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %27)
	br label %L.3
L.3:
	%28 = load %lex.FileContext** @lex_f
	store %lex.FileContext* %28, %lex.FileContext** %of
	%29 = load %lex.FileContext** %of
	%30 = getelementptr %lex.FileContext* %29, i32 0, i32 0
	%31 = load %lex.FileContext** %30
	%32 = bitcast %lex.FileContext* %31 to %lex.FileContext*
	store %lex.FileContext* %32, %lex.FileContext** @lex_f
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
declare external i32 @read(i32, [0 x i8]*, i32)
define internal void @lex_FillBuf() nounwind {
L.0:
	%k = alloca i32
	%0 = load %lex.FileContext** @lex_f
	%1 = getelementptr %lex.FileContext* %0, i32 0, i32 3
	%2 = load i32* %1
	%3 = load %lex.FileContext** @lex_f
	%4 = getelementptr %lex.FileContext* %3, i32 0, i32 7
	%5 = getelementptr [4096 x i8]* %4
	%6 = bitcast [4096 x i8]* %5 to [0 x i8]*
	%7 = call i32 @read(i32 %2, [0 x i8]* %6, i32 4096)
	store i32 %7, i32* %k
	%8 = load i32* %k
	%9 = icmp slt i32 %8, 0
	br i1 %9, label %L.2, label %L.1
L.2:
	store i32 0, i32* %k
	br label %L.1
L.1:
	%10 = load %lex.FileContext** @lex_f
	%11 = getelementptr %lex.FileContext* %10, i32 0, i32 5
	store i16 0, i16* %11
	%12 = load i32* %k
	%13 = trunc i32 %12 to i16
	%14 = load %lex.FileContext** @lex_f
	%15 = getelementptr %lex.FileContext* %14, i32 0, i32 6
	store i16 %13, i16* %15
	br label %return
return:
	ret void
}
define internal void @lex_MakeFnum(i64 %n$, i32 %scale1$) nounwind {
L.0:
	%n = alloca i64
	%scale1 = alloca i32
	store i64 %n$, i64* %n
	store i32 %scale1$, i32* %scale1
	%scale = alloca i32
	%0 = load i32* %scale1
	store i32 %0, i32* %scale
	%1 = load i64* %n
	store i64 %1, i64* @lex_Number
	%2 = load i32* %scale
	%3 = trunc i32 %2 to i16
	store i16 %3, i16* @lex_Scale
	br label %return
return:
	ret void
}
define internal void @lex_MakeFnumE(i64 %n$, i32 %scale1$, i32 %scale2$) nounwind {
L.0:
	%n = alloca i64
	%scale1 = alloca i32
	%scale2 = alloca i32
	store i64 %n$, i64* %n
	store i32 %scale1$, i32* %scale1
	store i32 %scale2$, i32* %scale2
	%scale = alloca i32
	%0 = load i32* %scale1
	%1 = load i32* %scale2
	%2 = sub i32 %0, %1
	store i32 %2, i32* %scale
	%3 = load i64* %n
	store i64 %3, i64* @lex_Number
	%4 = load i32* %scale
	%5 = trunc i32 %4 to i16
	store i16 %5, i16* @lex_Scale
	br label %return
return:
	ret void
}
define internal zeroext i8 @lex_EscChar(i8 zeroext %c$) nounwind {
L.0:
	%rv.0 = alloca i8
	%c = alloca i8
	store i8 %c$, i8* %c
	%0 = load i8* %c
	%1 = zext i8 %0 to i32
	switch i32 %1, label %L.1 [
		i32 110, label %L.3
		i32 114, label %L.4
		i32 116, label %L.5
		i32 98, label %L.6
		i32 118, label %L.7
		i32 102, label %L.8
	]
L.3:
	store i8 10, i8* %c
	br label %L.2
L.4:
	store i8 13, i8* %c
	br label %L.2
L.5:
	store i8 9, i8* %c
	br label %L.2
L.6:
	store i8 8, i8* %c
	br label %L.2
L.7:
	store i8 11, i8* %c
	br label %L.2
L.8:
	store i8 12, i8* %c
	br label %L.2
L.1:
	br label %L.2
L.2:
	%2 = load i8* %c
	store i8 %2, i8* %rv.0
	br label %return
return:
	%3 = load i8* %rv.0
	ret i8 %3
}
define internal i32 @lex_EscHex(i8 zeroext %c$, i32 %h$) nounwind {
L.0:
	%rv.0 = alloca i32
	%c = alloca i8
	%h = alloca i32
	store i8 %c$, i8* %c
	store i32 %h$, i32* %h
	%0 = load i8* %c
	%1 = zext i8 %0 to i32
	switch i32 %1, label %L.1 [
		i32 48, label %L.3
		i32 49, label %L.3
		i32 50, label %L.3
		i32 51, label %L.3
		i32 52, label %L.3
		i32 53, label %L.3
		i32 54, label %L.3
		i32 55, label %L.3
		i32 56, label %L.3
		i32 57, label %L.3
		i32 65, label %L.4
		i32 66, label %L.4
		i32 67, label %L.4
		i32 68, label %L.4
		i32 69, label %L.4
		i32 70, label %L.4
		i32 97, label %L.5
		i32 98, label %L.5
		i32 99, label %L.5
		i32 100, label %L.5
		i32 101, label %L.5
		i32 102, label %L.5
	]
L.3:
	%2 = load i8* %c
	%3 = sub i8 %2, 48
	store i8 %3, i8* %c
	br label %L.2
L.4:
	%4 = load i8* %c
	%5 = sub i8 %4, 65
	%6 = add i8 %5, 10
	store i8 %6, i8* %c
	br label %L.2
L.5:
	%7 = load i8* %c
	%8 = sub i8 %7, 97
	%9 = add i8 %8, 10
	store i8 %9, i8* %c
	br label %L.2
L.1:
	call void @lex_Error(i8 13)
	%10 = load i32* %h
	store i32 %10, i32* %rv.0
	br label %return
L.2:
	%11 = load i32* %h
	%12 = shl i32 %11, 4
	%13 = load i8* %c
	%14 = zext i8 %13 to i32
	%15 = or i32 %12, %14
	store i32 %15, i32* %rv.0
	br label %return
return:
	%16 = load i32* %rv.0
	ret i32 %16
}
@lex_unicodemax = internal constant [4 x i32] [ i32 127, i32 2047, i32 65535, i32 1114111 ], align 4
@lex_utf8pfx = internal constant [5 x i8] [ i8 0, i8 192, i8 224, i8 240, i8 248 ], align 1
define internal i32 @lex_EscUTF8(i32 %unicode$, i32 %j$) nounwind {
L.0:
	%rv.0 = alloca i32
	%unicode = alloca i32
	%j = alloca i32
	store i32 %unicode$, i32* %unicode
	store i32 %j$, i32* %j
	%n = alloca i32
	%i = alloca i32
	%k = alloca i32
	store i32 0, i32* %n
	br label %L.1
L.1:
	%0 = load i32* %unicode
	%1 = load i32* %n
	%2 = getelementptr [4 x i32]* @lex_unicodemax, i32 0, i32 %1
	%3 = load i32* %2
	%4 = icmp ule i32 %0, %3
	br i1 %4, label %L.2, label %L.3
L.3:
	%5 = load i32* %n
	%6 = add i32 %5, 1
	store i32 %6, i32* %n
	%7 = load i32* %n
	%8 = icmp ugt i32 %7, 3
	br i1 %8, label %L.2, label %L.4
L.4:
	br label %L.1
L.2:
	%9 = load i32* %n
	%10 = icmp uge i32 %9, 4
	br i1 %10, label %L.6, label %L.7
L.6:
	call void @lex_Error(i8 14)
	store i32 0, i32* %rv.0
	br label %return
L.7:
	%11 = load i32* %j
	%12 = load i32* %n
	%13 = add i32 %11, %12
	%14 = add i32 %13, 1
	store i32 %14, i32* %k
	%15 = load i32* %k
	%16 = icmp uge i32 %15, 4095
	br i1 %16, label %L.9, label %L.8
L.9:
	call void @lex_Error(i8 16)
	store i32 0, i32* %rv.0
	br label %return
L.8:
	%17 = load i32* %n
	store i32 %17, i32* %i
	br label %L.10
L.10:
	%18 = load i32* %i
	%19 = icmp ugt i32 %18, 0
	%20 = xor i1 %19, true
	br i1 %20, label %L.11, label %L.12
L.12:
	%21 = load i32* %unicode
	%22 = trunc i32 %21 to i8
	%23 = and i8 63, %22
	%24 = or i8 128, %23
	%25 = load i32* %j
	%26 = load i32* %i
	%27 = add i32 %25, %26
	%28 = getelementptr [4096 x i8]* @lex_StringBuf, i32 0, i32 %27
	store i8 %24, i8* %28
	%29 = load i32* %unicode
	%30 = lshr i32 %29, 6
	store i32 %30, i32* %unicode
	%31 = load i32* %i
	%32 = sub i32 %31, 1
	store i32 %32, i32* %i
	br label %L.10
L.11:
	%33 = load i32* %n
	%34 = getelementptr [5 x i8]* @lex_utf8pfx, i32 0, i32 %33
	%35 = load i8* %34
	%36 = load i32* %unicode
	%37 = trunc i32 %36 to i8
	%38 = or i8 %35, %37
	%39 = load i32* %j
	%40 = getelementptr [4096 x i8]* @lex_StringBuf, i32 0, i32 %39
	store i8 %38, i8* %40
	br label %L.5
L.5:
	%41 = load i32* %k
	store i32 %41, i32* %rv.0
	br label %return
return:
	%42 = load i32* %rv.0
	ret i32 %42
}
define internal zeroext i8 @lex_Next() nounwind {
L.0:
	%rv.0 = alloca i8
	%state = alloca i8
	%c = alloca i8
	%tok = alloca i8
	%i = alloca i16
	%e = alloca i16
	%j = alloca i16
	%k = alloca i16
	%str = alloca i8
	%neg = alloca i8
	%h = alloca i32
	%n = alloca i64
	store i8 0, i8* %state
	%0 = load i8* @lex_saves
	%1 = icmp ne i8 %0, 0
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load i8* @lex_saves
	store i8 %2, i8* %state
	store i8 0, i8* @lex_saves
	br label %L.1
L.1:
	store i8 0, i8* %tok
	%3 = load %lex.FileContext** @lex_f
	%4 = getelementptr %lex.FileContext* %3, i32 0, i32 5
	%5 = load i16* %4
	store i16 %5, i16* %i
	%6 = load %lex.FileContext** @lex_f
	%7 = getelementptr %lex.FileContext* %6, i32 0, i32 6
	%8 = load i16* %7
	store i16 %8, i16* %e
	br label %L.3
L.3:
	%9 = load i16* %i
	%10 = load i16* %e
	%11 = icmp uge i16 %9, %10
	br i1 %11, label %L.6, label %L.5
L.6:
	call void @lex_FillBuf()
	%12 = load %lex.FileContext** @lex_f
	%13 = getelementptr %lex.FileContext* %12, i32 0, i32 5
	%14 = load i16* %13
	store i16 %14, i16* %i
	%15 = load %lex.FileContext** @lex_f
	%16 = getelementptr %lex.FileContext* %15, i32 0, i32 6
	%17 = load i16* %16
	store i16 %17, i16* %e
	%18 = load i16* %e
	%19 = icmp eq i16 %18, 0
	br i1 %19, label %L.8, label %L.7
L.8:
	%20 = load i8* %state
	%21 = zext i8 %20 to i32
	switch i32 %21, label %L.9 [
		i32 0, label %L.11
		i32 2, label %L.12
		i32 3, label %L.12
		i32 4, label %L.12
	]
L.11:
	br label %L.10
L.12:
	call void @lex_Error(i8 10)
	br label %L.10
L.9:
	call void @lex_Error(i8 11)
	br label %L.10
L.10:
	store i8 1, i8* %tok
	br label %L.4
L.7:
	br label %L.5
L.5:
	%22 = load %lex.FileContext** @lex_f
	%23 = getelementptr %lex.FileContext* %22, i32 0, i32 7
	%24 = load i16* %i
	%25 = zext i16 %24 to i32
	%26 = getelementptr [4096 x i8]* %23, i32 0, i32 %25
	%27 = load i8* %26
	store i8 %27, i8* %c
	%28 = load i8* %state
	%29 = zext i8 %28 to i32
	switch i32 %29, label %L.13 [
		i32 0, label %L.15
		i32 23, label %L.16
		i32 24, label %L.17
		i32 25, label %L.17
		i32 26, label %L.17
		i32 1, label %L.18
		i32 2, label %L.19
		i32 3, label %L.20
		i32 4, label %L.21
		i32 5, label %L.22
		i32 6, label %L.23
		i32 7, label %L.24
		i32 8, label %L.25
		i32 9, label %L.26
		i32 10, label %L.27
		i32 11, label %L.28
		i32 12, label %L.29
		i32 13, label %L.30
		i32 14, label %L.31
		i32 15, label %L.32
		i32 16, label %L.33
		i32 17, label %L.34
		i32 18, label %L.35
		i32 19, label %L.36
		i32 20, label %L.37
		i32 21, label %L.38
		i32 22, label %L.39
		i32 27, label %L.40
		i32 28, label %L.41
		i32 29, label %L.42
		i32 30, label %L.43
		i32 31, label %L.44
		i32 33, label %L.44
		i32 34, label %L.44
		i32 35, label %L.44
		i32 37, label %L.44
		i32 38, label %L.44
		i32 39, label %L.44
		i32 40, label %L.44
		i32 41, label %L.44
		i32 42, label %L.44
		i32 43, label %L.44
		i32 32, label %L.45
		i32 36, label %L.46
		i32 44, label %L.46
	]
L.15:
	%30 = load i8* %c
	%31 = zext i8 %30 to i32
	switch i32 %31, label %L.47 [
		i32 58, label %L.49
		i32 59, label %L.50
		i32 44, label %L.51
		i32 64, label %L.52
		i32 126, label %L.53
		i32 94, label %L.54
		i32 42, label %L.55
		i32 37, label %L.56
		i32 40, label %L.57
		i32 41, label %L.58
		i32 123, label %L.59
		i32 125, label %L.60
		i32 63, label %L.61
		i32 91, label %L.62
		i32 93, label %L.63
		i32 46, label %L.64
		i32 47, label %L.65
		i32 33, label %L.66
		i32 60, label %L.67
		i32 62, label %L.68
		i32 61, label %L.69
		i32 43, label %L.70
		i32 45, label %L.71
		i32 38, label %L.72
		i32 124, label %L.73
		i32 48, label %L.74
		i32 49, label %L.75
		i32 50, label %L.75
		i32 51, label %L.75
		i32 52, label %L.75
		i32 53, label %L.75
		i32 54, label %L.75
		i32 55, label %L.75
		i32 56, label %L.75
		i32 57, label %L.75
		i32 39, label %L.76
		i32 34, label %L.77
		i32 32, label %L.78
		i32 9, label %L.78
		i32 10, label %L.78
		i32 13, label %L.78
		i32 12, label %L.78
		i32 65, label %L.79
		i32 66, label %L.79
		i32 67, label %L.79
		i32 68, label %L.79
		i32 69, label %L.79
		i32 70, label %L.79
		i32 71, label %L.79
		i32 72, label %L.79
		i32 73, label %L.79
		i32 74, label %L.79
		i32 75, label %L.79
		i32 76, label %L.79
		i32 77, label %L.79
		i32 78, label %L.79
		i32 79, label %L.79
		i32 80, label %L.79
		i32 81, label %L.79
		i32 82, label %L.79
		i32 83, label %L.79
		i32 84, label %L.79
		i32 85, label %L.79
		i32 86, label %L.79
		i32 87, label %L.79
		i32 88, label %L.79
		i32 89, label %L.79
		i32 90, label %L.79
		i32 97, label %L.79
		i32 98, label %L.79
		i32 99, label %L.79
		i32 100, label %L.79
		i32 101, label %L.79
		i32 102, label %L.79
		i32 103, label %L.79
		i32 104, label %L.79
		i32 105, label %L.79
		i32 106, label %L.79
		i32 107, label %L.79
		i32 108, label %L.79
		i32 109, label %L.79
		i32 110, label %L.79
		i32 111, label %L.79
		i32 112, label %L.79
		i32 113, label %L.79
		i32 114, label %L.79
		i32 115, label %L.79
		i32 116, label %L.79
		i32 117, label %L.79
		i32 118, label %L.79
		i32 119, label %L.79
		i32 120, label %L.79
		i32 121, label %L.79
		i32 122, label %L.79
		i32 95, label %L.79
		i32 194, label %L.80
		i32 195, label %L.80
		i32 196, label %L.80
		i32 197, label %L.80
		i32 198, label %L.80
		i32 199, label %L.80
		i32 200, label %L.80
		i32 201, label %L.80
		i32 202, label %L.80
		i32 203, label %L.80
		i32 204, label %L.80
		i32 205, label %L.80
		i32 206, label %L.80
		i32 207, label %L.80
		i32 208, label %L.80
		i32 209, label %L.80
		i32 210, label %L.80
		i32 211, label %L.80
		i32 212, label %L.80
		i32 213, label %L.80
		i32 214, label %L.80
		i32 215, label %L.80
		i32 216, label %L.80
		i32 217, label %L.80
		i32 218, label %L.80
		i32 219, label %L.80
		i32 220, label %L.80
		i32 221, label %L.80
		i32 222, label %L.80
		i32 223, label %L.80
		i32 224, label %L.81
		i32 225, label %L.81
		i32 226, label %L.81
		i32 227, label %L.81
		i32 228, label %L.81
		i32 229, label %L.81
		i32 230, label %L.81
		i32 231, label %L.81
		i32 232, label %L.81
		i32 233, label %L.81
		i32 234, label %L.81
		i32 235, label %L.81
		i32 236, label %L.81
		i32 237, label %L.81
		i32 238, label %L.81
		i32 239, label %L.81
		i32 240, label %L.82
		i32 241, label %L.82
		i32 242, label %L.82
		i32 243, label %L.82
		i32 244, label %L.82
	]
L.49:
	store i8 3, i8* %tok
	%32 = load i16* %i
	%33 = add i16 %32, 1
	store i16 %33, i16* %i
	br label %L.48
L.50:
	store i8 4, i8* %tok
	%34 = load i16* %i
	%35 = add i16 %34, 1
	store i16 %35, i16* %i
	br label %L.48
L.51:
	store i8 5, i8* %tok
	%36 = load i16* %i
	%37 = add i16 %36, 1
	store i16 %37, i16* %i
	br label %L.48
L.52:
	store i8 7, i8* %tok
	%38 = load i16* %i
	%39 = add i16 %38, 1
	store i16 %39, i16* %i
	br label %L.48
L.53:
	store i8 13, i8* %tok
	%40 = load i16* %i
	%41 = add i16 %40, 1
	store i16 %41, i16* %i
	br label %L.48
L.54:
	store i8 17, i8* %tok
	%42 = load i16* %i
	%43 = add i16 %42, 1
	store i16 %43, i16* %i
	br label %L.48
L.55:
	store i8 18, i8* %tok
	%44 = load i16* %i
	%45 = add i16 %44, 1
	store i16 %45, i16* %i
	br label %L.48
L.56:
	store i8 20, i8* %tok
	%46 = load i16* %i
	%47 = add i16 %46, 1
	store i16 %47, i16* %i
	br label %L.48
L.57:
	store i8 32, i8* %tok
	%48 = load i16* %i
	%49 = add i16 %48, 1
	store i16 %49, i16* %i
	br label %L.48
L.58:
	store i8 33, i8* %tok
	%50 = load i16* %i
	%51 = add i16 %50, 1
	store i16 %51, i16* %i
	br label %L.48
L.59:
	store i8 36, i8* %tok
	%52 = load i16* %i
	%53 = add i16 %52, 1
	store i16 %53, i16* %i
	br label %L.48
L.60:
	store i8 37, i8* %tok
	%54 = load i16* %i
	%55 = add i16 %54, 1
	store i16 %55, i16* %i
	br label %L.48
L.61:
	store i8 8, i8* %tok
	%56 = load i16* %i
	%57 = add i16 %56, 1
	store i16 %57, i16* %i
	br label %L.48
L.62:
	store i8 34, i8* %tok
	%58 = load i16* %i
	%59 = add i16 %58, 1
	store i16 %59, i16* %i
	br label %L.48
L.63:
	store i8 35, i8* %tok
	%60 = load i16* %i
	%61 = add i16 %60, 1
	store i16 %61, i16* %i
	br label %L.48
L.64:
	store i8 5, i8* %state
	br label %L.48
L.65:
	store i8 1, i8* %state
	br label %L.48
L.66:
	store i8 11, i8* %state
	br label %L.48
L.67:
	store i8 8, i8* %state
	br label %L.48
L.68:
	store i8 9, i8* %state
	br label %L.48
L.69:
	store i8 10, i8* %state
	br label %L.48
L.70:
	store i8 6, i8* %state
	br label %L.48
L.71:
	store i8 7, i8* %state
	br label %L.48
L.72:
	store i8 12, i8* %state
	br label %L.48
L.73:
	store i8 13, i8* %state
	br label %L.48
L.74:
	store i64 0, i64* %n
	store i8 14, i8* %state
	br label %L.48
L.75:
	%62 = load i8* %c
	%63 = zext i8 %62 to i64
	%64 = sub i64 %63, 48
	store i64 %64, i64* %n
	store i16 1, i16* %j
	store i8 18, i8* %state
	br label %L.48
L.76:
	store i8 27, i8* %state
	br label %L.48
L.77:
	store i16 0, i16* %j
	store i8 29, i8* %state
	br label %L.48
L.78:
	br label %L.48
L.79:
	%65 = load i8* %c
	%66 = getelementptr [256 x i8]* @lex_Ident, i32 0, i32 0
	store i8 %65, i8* %66
	store i16 1, i16* %j
	store i8 23, i8* %state
	br label %L.48
L.80:
	%67 = load i8* %c
	%68 = getelementptr [256 x i8]* @lex_Ident, i32 0, i32 0
	store i8 %67, i8* %68
	store i16 1, i16* %j
	store i8 24, i8* %state
	br label %L.48
L.81:
	%69 = load i8* %c
	%70 = getelementptr [256 x i8]* @lex_Ident, i32 0, i32 0
	store i8 %69, i8* %70
	store i16 1, i16* %j
	store i8 25, i8* %state
	br label %L.48
L.82:
	%71 = load i8* %c
	%72 = getelementptr [256 x i8]* @lex_Ident, i32 0, i32 0
	store i8 %71, i8* %72
	store i16 1, i16* %j
	store i8 26, i8* %state
	br label %L.48
L.47:
	call void @lex_Error(i8 8)
	br label %L.48
L.48:
	br label %L.14
L.16:
	%73 = load i8* %c
	%74 = zext i8 %73 to i32
	switch i32 %74, label %L.83 [
		i32 65, label %L.85
		i32 66, label %L.85
		i32 67, label %L.85
		i32 68, label %L.85
		i32 69, label %L.85
		i32 70, label %L.85
		i32 71, label %L.85
		i32 72, label %L.85
		i32 73, label %L.85
		i32 74, label %L.85
		i32 75, label %L.85
		i32 76, label %L.85
		i32 77, label %L.85
		i32 78, label %L.85
		i32 79, label %L.85
		i32 80, label %L.85
		i32 81, label %L.85
		i32 82, label %L.85
		i32 83, label %L.85
		i32 84, label %L.85
		i32 85, label %L.85
		i32 86, label %L.85
		i32 87, label %L.85
		i32 88, label %L.85
		i32 89, label %L.85
		i32 90, label %L.85
		i32 97, label %L.85
		i32 98, label %L.85
		i32 99, label %L.85
		i32 100, label %L.85
		i32 101, label %L.85
		i32 102, label %L.85
		i32 103, label %L.85
		i32 104, label %L.85
		i32 105, label %L.85
		i32 106, label %L.85
		i32 107, label %L.85
		i32 108, label %L.85
		i32 109, label %L.85
		i32 110, label %L.85
		i32 111, label %L.85
		i32 112, label %L.85
		i32 113, label %L.85
		i32 114, label %L.85
		i32 115, label %L.85
		i32 116, label %L.85
		i32 117, label %L.85
		i32 118, label %L.85
		i32 119, label %L.85
		i32 120, label %L.85
		i32 121, label %L.85
		i32 122, label %L.85
		i32 48, label %L.85
		i32 49, label %L.85
		i32 50, label %L.85
		i32 51, label %L.85
		i32 52, label %L.85
		i32 53, label %L.85
		i32 54, label %L.85
		i32 55, label %L.85
		i32 56, label %L.85
		i32 57, label %L.85
		i32 95, label %L.85
		i32 194, label %L.86
		i32 195, label %L.86
		i32 196, label %L.86
		i32 197, label %L.86
		i32 198, label %L.86
		i32 199, label %L.86
		i32 200, label %L.86
		i32 201, label %L.86
		i32 202, label %L.86
		i32 203, label %L.86
		i32 204, label %L.86
		i32 205, label %L.86
		i32 206, label %L.86
		i32 207, label %L.86
		i32 208, label %L.86
		i32 209, label %L.86
		i32 210, label %L.86
		i32 211, label %L.86
		i32 212, label %L.86
		i32 213, label %L.86
		i32 214, label %L.86
		i32 215, label %L.86
		i32 216, label %L.86
		i32 217, label %L.86
		i32 218, label %L.86
		i32 219, label %L.86
		i32 220, label %L.86
		i32 221, label %L.86
		i32 222, label %L.86
		i32 223, label %L.86
		i32 224, label %L.87
		i32 225, label %L.87
		i32 226, label %L.87
		i32 227, label %L.87
		i32 228, label %L.87
		i32 229, label %L.87
		i32 230, label %L.87
		i32 231, label %L.87
		i32 232, label %L.87
		i32 233, label %L.87
		i32 234, label %L.87
		i32 235, label %L.87
		i32 236, label %L.87
		i32 237, label %L.87
		i32 238, label %L.87
		i32 239, label %L.87
		i32 240, label %L.88
		i32 241, label %L.88
		i32 242, label %L.88
		i32 243, label %L.88
		i32 244, label %L.88
	]
L.85:
	%75 = load i8* %c
	%76 = load i16* %j
	%77 = zext i16 %76 to i32
	%78 = getelementptr [256 x i8]* @lex_Ident, i32 0, i32 %77
	store i8 %75, i8* %78
	%79 = load i16* %j
	%80 = add i16 %79, 1
	store i16 %80, i16* %j
	br label %L.84
L.86:
	%81 = load i8* %c
	%82 = load i16* %j
	%83 = zext i16 %82 to i32
	%84 = getelementptr [256 x i8]* @lex_Ident, i32 0, i32 %83
	store i8 %81, i8* %84
	%85 = load i16* %j
	%86 = add i16 %85, 1
	store i16 %86, i16* %j
	store i8 24, i8* %state
	br label %L.84
L.87:
	%87 = load i8* %c
	%88 = load i16* %j
	%89 = zext i16 %88 to i32
	%90 = getelementptr [256 x i8]* @lex_Ident, i32 0, i32 %89
	store i8 %87, i8* %90
	%91 = load i16* %j
	%92 = add i16 %91, 1
	store i16 %92, i16* %j
	store i8 25, i8* %state
	br label %L.84
L.88:
	%93 = load i8* %c
	%94 = load i16* %j
	%95 = zext i16 %94 to i32
	%96 = getelementptr [256 x i8]* @lex_Ident, i32 0, i32 %95
	store i8 %93, i8* %96
	%97 = load i16* %j
	%98 = add i16 %97, 1
	store i16 %98, i16* %j
	store i8 26, i8* %state
	br label %L.84
L.83:
	%99 = load i16* %j
	%100 = zext i16 %99 to i32
	%101 = getelementptr [256 x i8]* @lex_Ident, i32 0, i32 %100
	store i8 0, i8* %101
	store i8 41, i8* %tok
	br label %L.84
L.84:
	br label %L.14
L.17:
	%102 = load i8* %c
	%103 = and i8 %102, 192
	%104 = icmp eq i8 %103, 128
	br i1 %104, label %L.90, label %L.91
L.90:
	%105 = load i8* %c
	%106 = load i16* %j
	%107 = zext i16 %106 to i32
	%108 = getelementptr [256 x i8]* @lex_Ident, i32 0, i32 %107
	store i8 %105, i8* %108
	%109 = load i16* %j
	%110 = add i16 %109, 1
	store i16 %110, i16* %j
	%111 = load i8* %state
	%112 = sub i8 %111, 1
	store i8 %112, i8* %state
	br label %L.89
L.91:
	call void @lex_Error(i8 9)
	br label %L.89
L.89:
	br label %L.14
L.18:
	%113 = load i8* %c
	%114 = zext i8 %113 to i32
	switch i32 %114, label %L.92 [
		i32 47, label %L.94
		i32 42, label %L.95
	]
L.94:
	store i8 2, i8* %state
	br label %L.93
L.95:
	store i8 3, i8* %state
	br label %L.93
L.92:
	store i8 19, i8* %tok
	br label %L.93
L.93:
	br label %L.14
L.19:
	%115 = load i8* %c
	%116 = icmp eq i8 %115, 10
	br i1 %116, label %L.97, label %L.96
L.97:
	store i8 0, i8* %state
	br label %L.96
L.96:
	br label %L.14
L.20:
	%117 = load i8* %c
	%118 = icmp eq i8 %117, 42
	br i1 %118, label %L.99, label %L.98
L.99:
	store i8 4, i8* %state
	br label %L.98
L.98:
	br label %L.14
L.21:
	%119 = load i8* %c
	%120 = icmp eq i8 %119, 47
	br i1 %120, label %L.101, label %L.102
L.101:
	store i8 0, i8* %state
	br label %L.100
L.102:
	store i8 3, i8* %state
	br label %L.100
L.100:
	br label %L.14
L.22:
	%121 = load i8* %c
	%122 = zext i8 %121 to i32
	switch i32 %122, label %L.103 [
		i32 46, label %L.105
		i32 48, label %L.106
		i32 49, label %L.106
		i32 50, label %L.106
		i32 51, label %L.106
		i32 52, label %L.106
		i32 53, label %L.106
		i32 54, label %L.106
		i32 55, label %L.106
		i32 56, label %L.106
		i32 57, label %L.106
	]
L.105:
	store i8 6, i8* %tok
	%123 = load i16* %i
	%124 = add i16 %123, 1
	store i16 %124, i16* %i
	br label %L.104
L.106:
	store i64 0, i64* %n
	store i16 0, i16* %k
	store i16 0, i16* %j
	store i8 19, i8* %state
	br label %L.104
L.103:
	store i8 2, i8* %tok
	br label %L.104
L.104:
	br label %L.14
L.23:
	%125 = load i8* %c
	%126 = zext i8 %125 to i32
	switch i32 %126, label %L.107 [
		i32 61, label %L.109
	]
L.109:
	store i8 10, i8* %tok
	%127 = load i16* %i
	%128 = add i16 %127, 1
	store i16 %128, i16* %i
	br label %L.108
L.107:
	store i8 14, i8* %tok
	br label %L.108
L.108:
	br label %L.14
L.24:
	%129 = load i8* %c
	%130 = zext i8 %129 to i32
	switch i32 %130, label %L.110 [
		i32 61, label %L.112
	]
L.112:
	store i8 11, i8* %tok
	%131 = load i16* %i
	%132 = add i16 %131, 1
	store i16 %132, i16* %i
	br label %L.111
L.110:
	store i8 15, i8* %tok
	br label %L.111
L.111:
	br label %L.14
L.25:
	%133 = load i8* %c
	%134 = zext i8 %133 to i32
	switch i32 %134, label %L.113 [
		i32 61, label %L.115
		i32 60, label %L.116
	]
L.115:
	store i8 28, i8* %tok
	%135 = load i16* %i
	%136 = add i16 %135, 1
	store i16 %136, i16* %i
	br label %L.114
L.116:
	store i8 21, i8* %tok
	%137 = load i16* %i
	%138 = add i16 %137, 1
	store i16 %138, i16* %i
	br label %L.114
L.113:
	store i8 26, i8* %tok
	br label %L.114
L.114:
	br label %L.14
L.26:
	%139 = load i8* %c
	%140 = zext i8 %139 to i32
	switch i32 %140, label %L.117 [
		i32 61, label %L.119
		i32 62, label %L.120
	]
L.119:
	store i8 29, i8* %tok
	%141 = load i16* %i
	%142 = add i16 %141, 1
	store i16 %142, i16* %i
	br label %L.118
L.120:
	store i8 22, i8* %tok
	%143 = load i16* %i
	%144 = add i16 %143, 1
	store i16 %144, i16* %i
	br label %L.118
L.117:
	store i8 27, i8* %tok
	br label %L.118
L.118:
	br label %L.14
L.27:
	%145 = load i8* %c
	%146 = zext i8 %145 to i32
	switch i32 %146, label %L.121 [
		i32 61, label %L.123
	]
L.123:
	store i8 24, i8* %tok
	%147 = load i16* %i
	%148 = add i16 %147, 1
	store i16 %148, i16* %i
	br label %L.122
L.121:
	store i8 9, i8* %tok
	br label %L.122
L.122:
	br label %L.14
L.28:
	%149 = load i8* %c
	%150 = zext i8 %149 to i32
	switch i32 %150, label %L.124 [
		i32 61, label %L.126
	]
L.126:
	store i8 25, i8* %tok
	%151 = load i16* %i
	%152 = add i16 %151, 1
	store i16 %152, i16* %i
	br label %L.125
L.124:
	store i8 12, i8* %tok
	br label %L.125
L.125:
	br label %L.14
L.29:
	%153 = load i8* %c
	%154 = zext i8 %153 to i32
	switch i32 %154, label %L.127 [
		i32 38, label %L.129
	]
L.129:
	store i8 30, i8* %tok
	%155 = load i16* %i
	%156 = add i16 %155, 1
	store i16 %156, i16* %i
	br label %L.128
L.127:
	store i8 23, i8* %tok
	br label %L.128
L.128:
	br label %L.14
L.30:
	%157 = load i8* %c
	%158 = zext i8 %157 to i32
	switch i32 %158, label %L.130 [
		i32 124, label %L.132
	]
L.132:
	store i8 31, i8* %tok
	%159 = load i16* %i
	%160 = add i16 %159, 1
	store i16 %160, i16* %i
	br label %L.131
L.130:
	store i8 16, i8* %tok
	br label %L.131
L.131:
	br label %L.14
L.31:
	%161 = load i8* %c
	%162 = zext i8 %161 to i32
	switch i32 %162, label %L.133 [
		i32 98, label %L.135
		i32 111, label %L.136
		i32 120, label %L.137
		i32 48, label %L.138
		i32 49, label %L.138
		i32 50, label %L.138
		i32 51, label %L.138
		i32 52, label %L.138
		i32 53, label %L.138
		i32 54, label %L.138
		i32 55, label %L.138
		i32 56, label %L.138
		i32 57, label %L.138
		i32 95, label %L.139
		i32 46, label %L.140
	]
L.135:
	store i8 15, i8* %state
	br label %L.134
L.136:
	store i8 16, i8* %state
	br label %L.134
L.137:
	store i8 17, i8* %state
	br label %L.134
L.138:
	%163 = load i8* %c
	%164 = zext i8 %163 to i64
	%165 = sub i64 %164, 48
	store i64 %165, i64* %n
	store i16 1, i16* %j
	store i8 18, i8* %state
	br label %L.134
L.139:
	store i16 0, i16* %j
	store i8 18, i8* %state
	br label %L.134
L.140:
	store i16 0, i16* %k
	store i16 0, i16* %j
	store i8 19, i8* %state
	br label %L.134
L.133:
	%166 = load i64* %n
	store i64 %166, i64* @lex_Number
	store i8 38, i8* %tok
	br label %L.134
L.134:
	br label %L.14
L.32:
	%167 = load i8* %c
	%168 = zext i8 %167 to i32
	switch i32 %168, label %L.141 [
		i32 48, label %L.143
		i32 49, label %L.143
		i32 95, label %L.144
	]
L.143:
	%169 = load i64* %n
	%170 = shl i64 %169, 1
	%171 = load i8* %c
	%172 = zext i8 %171 to i64
	%173 = sub i64 %172, 48
	%174 = add i64 %170, %173
	store i64 %174, i64* %n
	br label %L.142
L.144:
	br label %L.142
L.141:
	%175 = load i64* %n
	store i64 %175, i64* @lex_Number
	store i8 38, i8* %tok
	br label %L.142
L.142:
	br label %L.14
L.33:
	%176 = load i8* %c
	%177 = zext i8 %176 to i32
	switch i32 %177, label %L.145 [
		i32 48, label %L.147
		i32 49, label %L.147
		i32 50, label %L.147
		i32 51, label %L.147
		i32 52, label %L.147
		i32 53, label %L.147
		i32 54, label %L.147
		i32 55, label %L.147
		i32 95, label %L.148
	]
L.147:
	%178 = load i64* %n
	%179 = shl i64 %178, 3
	%180 = load i8* %c
	%181 = zext i8 %180 to i64
	%182 = sub i64 %181, 48
	%183 = add i64 %179, %182
	store i64 %183, i64* %n
	br label %L.146
L.148:
	br label %L.146
L.145:
	%184 = load i64* %n
	store i64 %184, i64* @lex_Number
	store i8 38, i8* %tok
	br label %L.146
L.146:
	br label %L.14
L.34:
	%185 = load i8* %c
	%186 = zext i8 %185 to i32
	switch i32 %186, label %L.149 [
		i32 48, label %L.151
		i32 49, label %L.151
		i32 50, label %L.151
		i32 51, label %L.151
		i32 52, label %L.151
		i32 53, label %L.151
		i32 54, label %L.151
		i32 55, label %L.151
		i32 56, label %L.151
		i32 57, label %L.151
		i32 65, label %L.152
		i32 66, label %L.152
		i32 67, label %L.152
		i32 68, label %L.152
		i32 69, label %L.152
		i32 70, label %L.152
		i32 97, label %L.153
		i32 98, label %L.153
		i32 99, label %L.153
		i32 100, label %L.153
		i32 101, label %L.153
		i32 102, label %L.153
		i32 95, label %L.154
	]
L.151:
	%187 = load i64* %n
	%188 = shl i64 %187, 4
	%189 = load i8* %c
	%190 = zext i8 %189 to i64
	%191 = sub i64 %190, 48
	%192 = add i64 %188, %191
	store i64 %192, i64* %n
	br label %L.150
L.152:
	%193 = load i64* %n
	%194 = shl i64 %193, 4
	%195 = load i8* %c
	%196 = zext i8 %195 to i64
	%197 = sub i64 %196, 65
	%198 = add i64 %197, 10
	%199 = add i64 %194, %198
	store i64 %199, i64* %n
	br label %L.150
L.153:
	%200 = load i64* %n
	%201 = shl i64 %200, 4
	%202 = load i8* %c
	%203 = zext i8 %202 to i64
	%204 = sub i64 %203, 97
	%205 = add i64 %204, 10
	%206 = add i64 %201, %205
	store i64 %206, i64* %n
	br label %L.150
L.154:
	br label %L.150
L.149:
	%207 = load i64* %n
	store i64 %207, i64* @lex_Number
	store i8 38, i8* %tok
	br label %L.150
L.150:
	br label %L.14
L.35:
	%208 = load i8* %c
	%209 = zext i8 %208 to i32
	switch i32 %209, label %L.155 [
		i32 48, label %L.157
		i32 49, label %L.157
		i32 50, label %L.157
		i32 51, label %L.157
		i32 52, label %L.157
		i32 53, label %L.157
		i32 54, label %L.157
		i32 55, label %L.157
		i32 56, label %L.157
		i32 57, label %L.157
		i32 95, label %L.158
		i32 46, label %L.159
	]
L.157:
	%210 = load i64* %n
	%211 = mul i64 %210, 10
	%212 = load i8* %c
	%213 = zext i8 %212 to i64
	%214 = sub i64 %213, 48
	%215 = add i64 %211, %214
	store i64 %215, i64* %n
	%216 = load i16* %j
	%217 = add i16 %216, 1
	store i16 %217, i16* %j
	br label %L.156
L.158:
	br label %L.156
L.159:
	store i16 0, i16* %k
	store i8 19, i8* %state
	br label %L.156
L.155:
	%218 = load i64* %n
	store i64 %218, i64* @lex_Number
	store i8 38, i8* %tok
	br label %L.156
L.156:
	br label %L.14
L.36:
	%219 = load i8* %c
	%220 = zext i8 %219 to i32
	switch i32 %220, label %L.160 [
		i32 46, label %L.162
		i32 48, label %L.163
		i32 49, label %L.163
		i32 50, label %L.163
		i32 51, label %L.163
		i32 52, label %L.163
		i32 53, label %L.163
		i32 54, label %L.163
		i32 55, label %L.163
		i32 56, label %L.163
		i32 57, label %L.163
		i32 95, label %L.164
		i32 101, label %L.165
		i32 69, label %L.165
	]
L.162:
	store i8 5, i8* @lex_saves
	%221 = load i64* %n
	store i64 %221, i64* @lex_Number
	store i8 38, i8* %tok
	br label %L.161
L.163:
	%222 = load i64* %n
	%223 = mul i64 %222, 10
	%224 = load i8* %c
	%225 = zext i8 %224 to i64
	%226 = sub i64 %225, 48
	%227 = add i64 %223, %226
	store i64 %227, i64* %n
	%228 = load i16* %j
	%229 = add i16 %228, 1
	store i16 %229, i16* %j
	%230 = load i16* %k
	%231 = add i16 %230, 1
	store i16 %231, i16* %k
	store i8 20, i8* %state
	br label %L.161
L.164:
	br label %L.161
L.165:
	store i8 21, i8* %state
	br label %L.161
L.160:
	%232 = load i64* %n
	%233 = load i16* %k
	%234 = zext i16 %233 to i32
	call void @lex_MakeFnum(i64 %232, i32 %234)
	store i8 39, i8* %tok
	br label %L.161
L.161:
	br label %L.14
L.37:
	%235 = load i8* %c
	%236 = zext i8 %235 to i32
	switch i32 %236, label %L.166 [
		i32 48, label %L.168
		i32 49, label %L.168
		i32 50, label %L.168
		i32 51, label %L.168
		i32 52, label %L.168
		i32 53, label %L.168
		i32 54, label %L.168
		i32 55, label %L.168
		i32 56, label %L.168
		i32 57, label %L.168
		i32 95, label %L.169
		i32 101, label %L.170
		i32 69, label %L.170
	]
L.168:
	%237 = load i64* %n
	%238 = mul i64 %237, 10
	%239 = load i8* %c
	%240 = zext i8 %239 to i64
	%241 = sub i64 %240, 48
	%242 = add i64 %238, %241
	store i64 %242, i64* %n
	%243 = load i16* %j
	%244 = add i16 %243, 1
	store i16 %244, i16* %j
	%245 = load i16* %k
	%246 = add i16 %245, 1
	store i16 %246, i16* %k
	br label %L.167
L.169:
	br label %L.167
L.170:
	store i8 21, i8* %state
	br label %L.167
L.166:
	%247 = load i64* %n
	%248 = load i16* %k
	%249 = zext i16 %248 to i32
	call void @lex_MakeFnum(i64 %247, i32 %249)
	store i8 39, i8* %tok
	br label %L.167
L.167:
	br label %L.14
L.38:
	%250 = load i8* %c
	%251 = zext i8 %250 to i32
	switch i32 %251, label %L.171 [
		i32 45, label %L.173
		i32 43, label %L.174
		i32 48, label %L.175
		i32 49, label %L.175
		i32 50, label %L.175
		i32 51, label %L.175
		i32 52, label %L.175
		i32 53, label %L.175
		i32 54, label %L.175
		i32 55, label %L.175
		i32 56, label %L.175
		i32 57, label %L.175
	]
L.173:
	store i32 0, i32* %h
	store i8 1, i8* %neg
	store i8 22, i8* %state
	br label %L.172
L.174:
	store i32 0, i32* %h
	store i8 0, i8* %neg
	store i8 22, i8* %state
	br label %L.172
L.175:
	%252 = load i8* %c
	%253 = zext i8 %252 to i32
	%254 = sub i32 %253, 48
	store i32 %254, i32* %h
	store i8 0, i8* %neg
	store i8 22, i8* %state
	br label %L.172
L.171:
	store i8 0, i8* %state
	br label %L.172
L.172:
	br label %L.14
L.39:
	%255 = load i8* %c
	%256 = zext i8 %255 to i32
	switch i32 %256, label %L.176 [
		i32 48, label %L.178
		i32 49, label %L.178
		i32 50, label %L.178
		i32 51, label %L.178
		i32 52, label %L.178
		i32 53, label %L.178
		i32 54, label %L.178
		i32 55, label %L.178
		i32 56, label %L.178
		i32 57, label %L.178
	]
L.178:
	%257 = load i32* %h
	%258 = mul i32 %257, 10
	%259 = load i8* %c
	%260 = zext i8 %259 to i32
	%261 = sub i32 %260, 48
	%262 = add i32 %258, %261
	store i32 %262, i32* %h
	br label %L.177
L.176:
	%exp = alloca i32
	%263 = load i32* %h
	store i32 %263, i32* %exp
	%264 = load i8* %neg
	%265 = icmp ne i8 %264, 0
	br i1 %265, label %L.180, label %L.179
L.180:
	%266 = load i32* %exp
	%267 = sub i32 0, %266
	store i32 %267, i32* %exp
	br label %L.179
L.179:
	%268 = load i64* %n
	%269 = load i16* %k
	%270 = zext i16 %269 to i32
	%271 = load i32* %exp
	call void @lex_MakeFnumE(i64 %268, i32 %270, i32 %271)
	store i8 39, i8* %tok
	br label %L.177
L.177:
	br label %L.14
L.40:
	store i8 0, i8* %str
	%272 = load i8* %c
	%273 = zext i8 %272 to i32
	switch i32 %273, label %L.181 [
		i32 39, label %L.183
		i32 10, label %L.184
		i32 92, label %L.185
	]
L.183:
	call void @lex_Error(i8 12)
	store i8 0, i8* %state
	br label %L.182
L.184:
	call void @lex_Error(i8 7)
	store i8 0, i8* %state
	br label %L.182
L.185:
	store i8 30, i8* %state
	br label %L.182
L.181:
	%274 = load i8* %c
	%275 = zext i8 %274 to i32
	store i32 %275, i32* %h
	store i8 28, i8* %state
	br label %L.182
L.182:
	br label %L.14
L.41:
	%276 = load i8* %c
	%277 = zext i8 %276 to i32
	switch i32 %277, label %L.186 [
		i32 39, label %L.188
	]
L.188:
	%278 = load i32* %h
	%279 = zext i32 %278 to i64
	store i64 %279, i64* @lex_Number
	store i8 38, i8* %tok
	%280 = load i16* %i
	%281 = add i16 %280, 1
	store i16 %281, i16* %i
	br label %L.187
L.186:
	call void @lex_Error(i8 12)
	store i8 0, i8* %state
	br label %L.187
L.187:
	br label %L.14
L.42:
	store i8 1, i8* %str
	%282 = load i8* %c
	%283 = zext i8 %282 to i32
	switch i32 %283, label %L.189 [
		i32 34, label %L.191
		i32 10, label %L.192
		i32 92, label %L.193
	]
L.191:
	%284 = load i16* %j
	%285 = zext i16 %284 to i32
	%286 = getelementptr [4096 x i8]* @lex_StringBuf, i32 0, i32 %285
	store i8 0, i8* %286
	%287 = load i16* %j
	%288 = add i16 %287, 1
	store i16 %288, i16* @lex_StringLen
	store i8 40, i8* %tok
	%289 = load i16* %i
	%290 = add i16 %289, 1
	store i16 %290, i16* %i
	br label %L.190
L.192:
	call void @lex_Error(i8 7)
	store i8 0, i8* %state
	br label %L.190
L.193:
	store i8 30, i8* %state
	br label %L.190
L.189:
	%291 = load i16* %j
	%292 = icmp ult i16 %291, 4095
	br i1 %292, label %L.195, label %L.196
L.195:
	%293 = load i8* %c
	%294 = load i16* %j
	%295 = zext i16 %294 to i32
	%296 = getelementptr [4096 x i8]* @lex_StringBuf, i32 0, i32 %295
	store i8 %293, i8* %296
	%297 = load i16* %j
	%298 = add i16 %297, 1
	store i16 %298, i16* %j
	br label %L.194
L.196:
	call void @lex_Error(i8 16)
	br label %L.194
L.194:
	br label %L.190
L.190:
	br label %L.14
L.43:
	%299 = load i8* %c
	%300 = zext i8 %299 to i32
	switch i32 %300, label %L.197 [
		i32 10, label %L.199
		i32 120, label %L.200
		i32 117, label %L.201
		i32 85, label %L.202
	]
L.199:
	call void @lex_Error(i8 7)
	store i8 0, i8* %state
	br label %L.198
L.200:
	store i32 0, i32* %h
	store i8 31, i8* %state
	br label %L.198
L.201:
	store i32 0, i32* %h
	store i8 33, i8* %state
	br label %L.198
L.202:
	store i32 0, i32* %h
	store i8 37, i8* %state
	br label %L.198
L.197:
	%301 = load i8* %str
	%302 = icmp ne i8 %301, 0
	br i1 %302, label %L.204, label %L.205
L.204:
	%303 = load i16* %j
	%304 = icmp ult i16 %303, 4095
	br i1 %304, label %L.207, label %L.208
L.207:
	%305 = load i8* %c
	%306 = call i8 @lex_EscChar(i8 %305)
	%307 = load i16* %j
	%308 = zext i16 %307 to i32
	%309 = getelementptr [4096 x i8]* @lex_StringBuf, i32 0, i32 %308
	store i8 %306, i8* %309
	%310 = load i16* %j
	%311 = add i16 %310, 1
	store i16 %311, i16* %j
	br label %L.206
L.208:
	call void @lex_Error(i8 16)
	br label %L.206
L.206:
	store i8 29, i8* %state
	br label %L.203
L.205:
	%312 = load i8* %c
	%313 = call i8 @lex_EscChar(i8 %312)
	%314 = zext i8 %313 to i32
	store i32 %314, i32* %h
	store i8 28, i8* %state
	br label %L.203
L.203:
	br label %L.198
L.198:
	br label %L.14
L.44:
	%315 = load i8* %c
	%316 = zext i8 %315 to i32
	switch i32 %316, label %L.209 [
		i32 10, label %L.211
	]
L.211:
	call void @lex_Error(i8 7)
	store i8 0, i8* %state
	br label %L.210
L.209:
	%317 = load i8* %c
	%318 = load i32* %h
	%319 = call i32 @lex_EscHex(i8 %317, i32 %318)
	store i32 %319, i32* %h
	%320 = load i8* %state
	%321 = add i8 %320, 1
	store i8 %321, i8* %state
	br label %L.210
L.210:
	br label %L.14
L.45:
	%322 = load i8* %c
	%323 = zext i8 %322 to i32
	switch i32 %323, label %L.212 [
		i32 10, label %L.214
	]
L.214:
	call void @lex_Error(i8 7)
	store i8 0, i8* %state
	br label %L.213
L.212:
	%324 = load i8* %c
	%325 = load i32* %h
	%326 = call i32 @lex_EscHex(i8 %324, i32 %325)
	store i32 %326, i32* %h
	%327 = load i8* %str
	%328 = icmp ne i8 %327, 0
	br i1 %328, label %L.216, label %L.217
L.216:
	%329 = load i16* %j
	%330 = icmp ult i16 %329, 4095
	br i1 %330, label %L.219, label %L.220
L.219:
	%331 = load i32* %h
	%332 = trunc i32 %331 to i8
	%333 = load i16* %j
	%334 = zext i16 %333 to i32
	%335 = getelementptr [4096 x i8]* @lex_StringBuf, i32 0, i32 %334
	store i8 %332, i8* %335
	%336 = load i16* %j
	%337 = add i16 %336, 1
	store i16 %337, i16* %j
	br label %L.218
L.220:
	call void @lex_Error(i8 16)
	br label %L.218
L.218:
	store i8 29, i8* %state
	br label %L.215
L.217:
	store i8 28, i8* %state
	br label %L.215
L.215:
	br label %L.213
L.213:
	br label %L.14
L.46:
	%338 = load i8* %c
	%339 = zext i8 %338 to i32
	switch i32 %339, label %L.221 [
		i32 10, label %L.223
	]
L.223:
	call void @lex_Error(i8 7)
	store i8 0, i8* %state
	br label %L.222
L.221:
	%340 = load i8* %c
	%341 = load i32* %h
	%342 = call i32 @lex_EscHex(i8 %340, i32 %341)
	store i32 %342, i32* %h
	%343 = load i8* %str
	%344 = icmp ne i8 %343, 0
	br i1 %344, label %L.225, label %L.226
L.225:
	%345 = load i32* %h
	%346 = load i16* %j
	%347 = zext i16 %346 to i32
	%348 = call i32 @lex_EscUTF8(i32 %345, i32 %347)
	%349 = trunc i32 %348 to i16
	store i16 %349, i16* %j
	store i8 29, i8* %state
	br label %L.224
L.226:
	store i8 28, i8* %state
	br label %L.224
L.224:
	br label %L.222
L.222:
	br label %L.14
L.13:
	br label %L.14
L.14:
	%350 = load i8* %tok
	%351 = icmp ne i8 %350, 0
	br i1 %351, label %L.4, label %L.227
L.227:
	%352 = load i8* %c
	%353 = icmp eq i8 %352, 10
	br i1 %353, label %L.229, label %L.228
L.229:
	%354 = load %lex.FileContext** @lex_f
	%355 = getelementptr %lex.FileContext* %354, i32 0, i32 4
	%356 = load i16* %355
	%357 = add i16 %356, 1
	store i16 %357, i16* %355
	br label %L.228
L.228:
	%358 = load i16* %i
	%359 = add i16 %358, 1
	store i16 %359, i16* %i
	br label %L.3
L.4:
	%360 = load i16* %i
	%361 = load %lex.FileContext** @lex_f
	%362 = getelementptr %lex.FileContext* %361, i32 0, i32 5
	store i16 %360, i16* %362
	%363 = load i8* %tok
	store i8 %363, i8* @lex_Token
	%364 = load i8* %tok
	store i8 %364, i8* %rv.0
	br label %return
return:
	%365 = load i8* %rv.0
	ret i8 %365
}
define internal zeroext i8 @lex_Keyword([0 x i8]* %toklist$) nounwind {
L.0:
	%rv.0 = alloca i8
	%toklist = alloca [0 x i8]*
	store [0 x i8]* %toklist$, [0 x i8]** %toklist
	%tok = alloca i8
	%i = alloca i32
	%0 = load i8* @lex_Token
	%1 = icmp eq i8 %0, 41
	br i1 %1, label %L.2, label %L.1
L.2:
	store i32 0, i32* %i
	br label %L.3
L.3:
	%2 = load [0 x i8]** %toklist
	%3 = load i32* %i
	%4 = getelementptr [0 x i8]* %2, i32 0, i32 %3
	%5 = load i8* %4
	store i8 %5, i8* %tok
	%6 = load i8* %tok
	%7 = icmp eq i8 %6, 0
	br i1 %7, label %L.4, label %L.5
L.5:
	%8 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%9 = load i8* %tok
	%10 = zext i8 %9 to i32
	%11 = getelementptr [93 x [0 x i8]*]* @lex_keywords, i32 0, i32 %10
	%12 = load [0 x i8]** %11
	%13 = getelementptr [0 x i8]* %12
	%14 = bitcast [0 x i8]* %13 to [0 x i8]*
	%15 = call i8 @zstr_eq([0 x i8]* %8, [0 x i8]* %14, i32 255)
	%16 = icmp ne i8 %15, 0
	br i1 %16, label %L.7, label %L.6
L.7:
	%17 = load i8* %tok
	store i8 %17, i8* %rv.0
	br label %return
L.6:
	%18 = load i32* %i
	%19 = add i32 %18, 1
	store i32 %19, i32* %i
	br label %L.3
L.4:
	br label %L.1
L.1:
	%20 = load i8* @lex_Token
	store i8 %20, i8* %rv.0
	br label %return
return:
	%21 = load i8* %rv.0
	ret i8 %21
}
define internal zeroext i8 @lex_Expect(i8 zeroext %expect$) nounwind {
L.0:
	%rv.0 = alloca i8
	%expect = alloca i8
	store i8 %expect$, i8* %expect
	%tok = alloca i8
	%toklist = alloca [2 x i8]
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %expect
	%2 = icmp ugt i8 %1, 41
	br i1 %2, label %L.2, label %L.1
L.2:
	%3 = load i8* %expect
	%4 = getelementptr [2 x i8]* %toklist, i32 0, i32 0
	store i8 %3, i8* %4
	%5 = getelementptr [2 x i8]* %toklist, i32 0, i32 1
	store i8 0, i8* %5
	%6 = bitcast [2 x i8]* %toklist to [0 x i8]*
	%7 = call i8 @lex_Keyword([0 x i8]* %6)
	store i8 %7, i8* %tok
	br label %L.1
L.1:
	%8 = load i8* %tok
	%9 = load i8* %expect
	%10 = icmp eq i8 %8, %9
	br i1 %10, label %L.4, label %L.5
L.4:
	%11 = call i8 @lex_Next()
	store i8 %11, i8* %tok
	br label %L.3
L.5:
	%12 = load i8* %expect
	call void @lex_ErrorT(i8 17, i8 %12)
	br label %L.3
L.3:
	%13 = load i8* %tok
	store i8 %13, i8* %rv.0
	br label %return
return:
	%14 = load i8* %rv.0
	ret i8 %14
}
@S.203 = internal constant [7 x i8] c" line=\00"
@S.204 = internal constant [6 x i8] c" tok=\00"
@S.205 = internal constant [3 x i8] c" \22\00"
define internal void @lex_WhereAmI([0 x i8]* %msg$) nounwind {
L.0:
	%msg = alloca [0 x i8]*
	store [0 x i8]* %msg$, [0 x i8]** %msg
	%0 = load [0 x i8]** %msg
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %1)
	%2 = getelementptr [7 x i8]* @S.203
	%3 = bitcast [7 x i8]* %2 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %3)
	%4 = call i16 @lex_Lineno()
	%5 = zext i16 %4 to i32
	call void @sys_fildes_uint(i32 2, i32 %5)
	%6 = getelementptr [6 x i8]* @S.204
	%7 = bitcast [6 x i8]* %6 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %7)
	%8 = load i8* @lex_Token
	%9 = zext i8 %8 to i32
	%10 = getelementptr [93 x [0 x i8]*]* @lex_keywords, i32 0, i32 %9
	%11 = load [0 x i8]** %10
	%12 = bitcast [0 x i8]* %11 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %12)
	%13 = load i8* @lex_Token
	%14 = icmp eq i8 %13, 41
	br i1 %14, label %L.2, label %L.1
L.2:
	%15 = getelementptr [3 x i8]* @S.205
	%16 = bitcast [3 x i8]* %15 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %16)
	%17 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %17)
	call void @sys_fildes_chr(i32 2, i8 34)
	br label %L.1
L.1:
	call void @sys_fildes_nl(i32 2)
	br label %return
return:
	ret void
}
@lex_plist = internal constant [2 x i8] [ i8 33, i8 0 ], align 1
@lex_alist = internal constant [2 x i8] [ i8 35, i8 0 ], align 1
@lex_glist = internal constant [2 x i8] [ i8 37, i8 0 ], align 1
define internal zeroext i8 @lex_Skip([0 x i8]* %toklist$) nounwind {
L.0:
	%rv.0 = alloca i8
	%toklist = alloca [0 x i8]*
	store [0 x i8]* %toklist$, [0 x i8]** %toklist
	%tok = alloca i8
	%ttok = alloca i8
	%i = alloca i32
	%0 = call i8 @lex_Next()
	store i8 %0, i8* %tok
	store i8 1, i8* %ttok
	br label %L.1
L.1:
	%1 = load i8* %tok
	%2 = icmp ne i8 %1, 1
	%3 = xor i1 %2, true
	br i1 %3, label %L.2, label %L.3
L.3:
	store i32 0, i32* %i
	br label %L.4
L.4:
	%4 = load [0 x i8]** %toklist
	%5 = load i32* %i
	%6 = getelementptr [0 x i8]* %4, i32 0, i32 %5
	%7 = load i8* %6
	store i8 %7, i8* %ttok
	%8 = load i8* %ttok
	%9 = icmp eq i8 %8, 0
	br i1 %9, label %L.8, label %L.7
L.7:
	%10 = load i8* %tok
	%11 = load i8* %ttok
	%12 = icmp eq i8 %10, %11
	br label %L.8
L.8:
	%13 = phi i1 [ true, %L.4 ], [ %12, %L.7 ]
	br i1 %13, label %L.5, label %L.6
L.6:
	%14 = load i8* %ttok
	%15 = icmp ugt i8 %14, 41
	br i1 %15, label %L.10, label %L.11
L.10:
	%16 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%17 = load i8* %ttok
	%18 = zext i8 %17 to i32
	%19 = getelementptr [93 x [0 x i8]*]* @lex_keywords, i32 0, i32 %18
	%20 = load [0 x i8]** %19
	%21 = getelementptr [0 x i8]* %20
	%22 = bitcast [0 x i8]* %21 to [0 x i8]*
	%23 = call i8 @zstr_eq([0 x i8]* %16, [0 x i8]* %22, i32 255)
	%24 = icmp ne i8 %23, 0
	br label %L.11
L.11:
	%25 = phi i1 [ false, %L.6 ], [ %24, %L.10 ]
	br i1 %25, label %L.5, label %L.9
L.9:
	%26 = load i32* %i
	%27 = add i32 %26, 1
	store i32 %27, i32* %i
	br label %L.4
L.5:
	%28 = load i8* %ttok
	%29 = icmp ne i8 %28, 0
	br i1 %29, label %L.2, label %L.12
L.12:
	%30 = load i8* %tok
	%31 = zext i8 %30 to i32
	switch i32 %31, label %L.13 [
		i32 32, label %L.15
		i32 34, label %L.16
		i32 36, label %L.17
	]
L.15:
	%32 = bitcast [2 x i8]* @lex_plist to [0 x i8]*
	%33 = call i8 @lex_Skip([0 x i8]* %32)
	store i8 %33, i8* %tok
	br label %L.14
L.16:
	%34 = bitcast [2 x i8]* @lex_alist to [0 x i8]*
	%35 = call i8 @lex_Skip([0 x i8]* %34)
	store i8 %35, i8* %tok
	br label %L.14
L.17:
	%36 = bitcast [2 x i8]* @lex_glist to [0 x i8]*
	%37 = call i8 @lex_Skip([0 x i8]* %36)
	store i8 %37, i8* %tok
	br label %L.14
L.13:
	br label %L.14
L.14:
	%38 = call i8 @lex_Next()
	store i8 %38, i8* %tok
	br label %L.1
L.2:
	%39 = load i8* %ttok
	store i8 %39, i8* %rv.0
	br label %return
return:
	%40 = load i8* %rv.0
	ret i8 %40
}
define internal zeroext i8 @lex_Want([0 x i8]* %toklist$) nounwind {
L.0:
	%rv.0 = alloca i8
	%toklist = alloca [0 x i8]*
	store [0 x i8]* %toklist$, [0 x i8]** %toklist
	%tok = alloca i8
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = load [0 x i8]** %toklist
	%3 = getelementptr [0 x i8]* %2, i32 0, i32 0
	%4 = load i8* %3
	%5 = icmp ne i8 %1, %4
	br i1 %5, label %L.2, label %L.1
L.2:
	%6 = load [0 x i8]** %toklist
	%7 = getelementptr [0 x i8]* %6, i32 0, i32 0
	%8 = load i8* %7
	call void @lex_ErrorT(i8 17, i8 %8)
	%9 = load [0 x i8]** %toklist
	%10 = bitcast [0 x i8]* %9 to [0 x i8]*
	%11 = call i8 @lex_Skip([0 x i8]* %10)
	store i8 %11, i8* %tok
	br label %L.1
L.1:
	%12 = load i8* %tok
	store i8 %12, i8* %rv.0
	br label %return
return:
	%13 = load i8* %rv.0
	ret i8 %13
}
%type.TypeListEntry = type {%type.TypeListEntry*, %type.TypeNode*}
%ast.AstNode = type {i8, i8, i16, i16, i16, i16, i16, i32, %type.TypeNode*, %symb.SymbNode*, i64, [0 x %ast.AstNode*]}
%symb.SymbNode = type {%symb.SymbNode*, %type.TypeNode*, %symb.SymbNode*, %symb.SymbNode*, %type.TypeListEntry*, %symb.SymbNode*, %symb.SymbNode*, %symb.SymbNode*, %ast.AstNode*, i64, i16, i16, i16, i8, i8, i8, i8, i8, i8, i8, i8, i8, [0 x i8]}
%type.TypeNode = type {%type.TypeNode*, %type.TypeNode*, %type.TypeNode*, %symb.SymbNode*, %symb.SymbNode*, %symb.SymbNode*, %type.TypeNode*, i64, i64, i32, i32, i32, i16, i16, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8}
@type_unkntype = internal global %type.TypeNode* zeroinitializer, align 4
@type_booltype = internal global %type.TypeNode* zeroinitializer, align 4
@type_bytetype = internal global %type.TypeNode* zeroinitializer, align 4
@type_wordtype = internal global %type.TypeNode* zeroinitializer, align 4
@type_swordtype = internal global %type.TypeNode* zeroinitializer, align 4
@type_floattype = internal global %type.TypeNode* zeroinitializer, align 4
@type_uintptrtype = internal global %type.TypeNode* zeroinitializer, align 4
@type_memtype = internal global %type.TypeNode* zeroinitializer, align 4
@type_addrtype = internal global %type.TypeNode* zeroinitializer, align 4
@type_NINTS = internal constant i32 6, align 4
@type_uinttypes = internal global [6 x %type.TypeNode*] zeroinitializer, align 4
@type_inttypes = internal global [6 x %type.TypeNode*] zeroinitializer, align 4
@type_NFLOATS = internal constant i32 2, align 4
@type_floattypes = internal global [2 x %type.TypeNode*] zeroinitializer, align 4
define internal i32 @type_TypeNode_Span(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca i32
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%0 = load %type.TypeNode** %t
	%1 = getelementptr %type.TypeNode* %0, i32 0, i32 25
	%2 = load i8* %1
	%3 = icmp ne i8 %2, 0
	br i1 %3, label %L.2, label %L.3
L.2:
	store i32 0, i32* %rv.0
	br label %return
L.3:
	%4 = load %type.TypeNode** %t
	%5 = getelementptr %type.TypeNode* %4, i32 0, i32 8
	%6 = load i64* %5
	%7 = load %type.TypeNode** %t
	%8 = getelementptr %type.TypeNode* %7, i32 0, i32 7
	%9 = load i64* %8
	%10 = sub i64 %6, %9
	%11 = add i64 %10, 1
	%12 = trunc i64 %11 to i32
	store i32 %12, i32* %rv.0
	br label %return
L.1:
	br label %return
return:
	%13 = load i32* %rv.0
	ret i32 %13
}
@target_TargetsMax = internal constant i32 31, align 4
@target_DefaultTarget = internal constant [4 x i8] c"x86\00", align 1
@target_TargetName = internal global [0 x i8]* zeroinitializer, align 4
@target_Triple = internal global [0 x i8]* zeroinitializer, align 4
%target.SizeAlign = type {i8, i8}
%target.ModelT = type {i8, i8, i8, i8, i8, i8, %target.SizeAlign, [6 x %target.SizeAlign]}
@target_Model32LEU = internal constant %target.ModelT { i8 2, i8 2, i8 8, i8 32, i8 0, i8 4, %target.SizeAlign { i8 32, i8 32 }, [6 x %target.SizeAlign] [ %target.SizeAlign { i8 8, i8 8 }, %target.SizeAlign { i8 16, i8 16 }, %target.SizeAlign { i8 32, i8 32 }, %target.SizeAlign { i8 64, i8 32 }, %target.SizeAlign { i8 0, i8 0 }, %target.SizeAlign { i8 0, i8 0 } ] }, align 1
@target_Model32LEA = internal constant %target.ModelT { i8 2, i8 2, i8 8, i8 32, i8 1, i8 4, %target.SizeAlign { i8 32, i8 32 }, [6 x %target.SizeAlign] [ %target.SizeAlign { i8 8, i8 8 }, %target.SizeAlign { i8 16, i8 16 }, %target.SizeAlign { i8 32, i8 32 }, %target.SizeAlign { i8 64, i8 32 }, %target.SizeAlign { i8 0, i8 0 }, %target.SizeAlign { i8 0, i8 0 } ] }, align 1
@target_Model64LEU = internal constant %target.ModelT { i8 2, i8 2, i8 8, i8 64, i8 0, i8 5, %target.SizeAlign { i8 64, i8 64 }, [6 x %target.SizeAlign] [ %target.SizeAlign { i8 8, i8 8 }, %target.SizeAlign { i8 16, i8 16 }, %target.SizeAlign { i8 32, i8 32 }, %target.SizeAlign { i8 64, i8 64 }, %target.SizeAlign { i8 128, i8 64 }, %target.SizeAlign { i8 0, i8 0 } ] }, align 1
@target_Model32BEA = internal constant %target.ModelT { i8 1, i8 1, i8 8, i8 32, i8 1, i8 5, %target.SizeAlign { i8 32, i8 32 }, [6 x %target.SizeAlign] [ %target.SizeAlign { i8 8, i8 8 }, %target.SizeAlign { i8 16, i8 16 }, %target.SizeAlign { i8 32, i8 32 }, %target.SizeAlign { i8 64, i8 32 }, %target.SizeAlign { i8 0, i8 0 }, %target.SizeAlign { i8 0, i8 0 } ] }, align 1
@target_Model64BEA = internal constant %target.ModelT { i8 1, i8 1, i8 8, i8 64, i8 1, i8 4, %target.SizeAlign { i8 64, i8 64 }, [6 x %target.SizeAlign] [ %target.SizeAlign { i8 8, i8 8 }, %target.SizeAlign { i8 16, i8 16 }, %target.SizeAlign { i8 32, i8 32 }, %target.SizeAlign { i8 64, i8 64 }, %target.SizeAlign { i8 128, i8 128 }, %target.SizeAlign { i8 0, i8 0 } ] }, align 1
@target_Model16LEA = internal constant %target.ModelT { i8 2, i8 2, i8 8, i8 16, i8 1, i8 3, %target.SizeAlign { i8 16, i8 16 }, [6 x %target.SizeAlign] [ %target.SizeAlign { i8 8, i8 8 }, %target.SizeAlign { i8 16, i8 16 }, %target.SizeAlign { i8 32, i8 16 }, %target.SizeAlign { i8 0, i8 0 }, %target.SizeAlign { i8 0, i8 0 }, %target.SizeAlign { i8 0, i8 0 } ] }, align 1
%target.TargetT = type {[0 x i8]*, [0 x i8]*, %target.ModelT*}
@S.266 = internal constant [4 x i8] c"x86\00"
@S.267 = internal constant [23 x i8] c"i386-unknown-linux-gnu\00"
@S.269 = internal constant [5 x i8] c"i386\00"
@S.270 = internal constant [23 x i8] c"i386-unknown-linux-gnu\00"
@S.272 = internal constant [5 x i8] c"i486\00"
@S.273 = internal constant [23 x i8] c"i486-unknown-linux-gnu\00"
@S.275 = internal constant [5 x i8] c"i586\00"
@S.276 = internal constant [23 x i8] c"i586-unknown-linux-gnu\00"
@S.278 = internal constant [5 x i8] c"i686\00"
@S.279 = internal constant [23 x i8] c"i686-unknown-linux-gnu\00"
@S.281 = internal constant [7 x i8] c"x86-64\00"
@S.282 = internal constant [25 x i8] c"x86_64-unknown-linux-gnu\00"
@S.284 = internal constant [7 x i8] c"x86_64\00"
@S.285 = internal constant [25 x i8] c"x86_64-unknown-linux-gnu\00"
@S.287 = internal constant [14 x i8] c"x86_64-darwin\00"
@S.288 = internal constant [22 x i8] c"x86_64-apple-darwin10\00"
@S.290 = internal constant [10 x i8] c"cortex-m0\00"
@S.291 = internal constant [25 x i8] c"thumbv6m-unknown-unknown\00"
@S.293 = internal constant [10 x i8] c"cortex-m3\00"
@S.294 = internal constant [25 x i8] c"thumbv7m-unknown-unknown\00"
@S.296 = internal constant [16 x i8] c"cortex-m3-align\00"
@S.297 = internal constant [25 x i8] c"thumbv7m-unknown-unknown\00"
@S.299 = internal constant [10 x i8] c"cortex-m4\00"
@S.300 = internal constant [25 x i8] c"thumbv7m-unknown-unknown\00"
@S.302 = internal constant [8 x i8] c"arm920t\00"
@S.303 = internal constant [22 x i8] c"thumb-unknown-unknown\00"
@S.305 = internal constant [5 x i8] c"mips\00"
@S.306 = internal constant [21 x i8] c"mips-unknown-unknown\00"
@S.308 = internal constant [7 x i8] c"mipsle\00"
@S.309 = internal constant [21 x i8] c"mips-unknown-unknown\00"
@S.311 = internal constant [6 x i8] c"xcore\00"
@S.312 = internal constant [22 x i8] c"xcore-unknown-unknown\00"
@S.314 = internal constant [5 x i8] c"bfin\00"
@S.315 = internal constant [21 x i8] c"bfin-unknown-unknown\00"
@S.317 = internal constant [6 x i8] c"ppc32\00"
@S.318 = internal constant [20 x i8] c"ppc32-unknown-linux\00"
@S.320 = internal constant [6 x i8] c"ppc64\00"
@S.321 = internal constant [20 x i8] c"ppc64-unknown-linux\00"
@S.323 = internal constant [6 x i8] c"s390x\00"
@S.324 = internal constant [22 x i8] c"systemz-unknown-linux\00"
@S.326 = internal constant [8 x i8] c"systemz\00"
@S.327 = internal constant [22 x i8] c"systemz-unknown-linux\00"
@S.329 = internal constant [8 x i8] c"aarch64\00"
@S.330 = internal constant [22 x i8] c"aarch64-unknown-linux\00"
@S.332 = internal constant [7 x i8] c"msp430\00"
@S.333 = internal constant [23 x i8] c"msp430-generic-generic\00"
@target_Targets = internal constant [23 x %target.TargetT] [ %target.TargetT { [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.266 )  to [0 x i8]* ), [0 x i8]* bitcast( [23 x i8]* getelementptr( [23 x i8]* @S.267 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model32LEU )  }, %target.TargetT { [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.269 )  to [0 x i8]* ), [0 x i8]* bitcast( [23 x i8]* getelementptr( [23 x i8]* @S.270 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model32LEU )  }, %target.TargetT { [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.272 )  to [0 x i8]* ), [0 x i8]* bitcast( [23 x i8]* getelementptr( [23 x i8]* @S.273 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model32LEU )  }, %target.TargetT { [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.275 )  to [0 x i8]* ), [0 x i8]* bitcast( [23 x i8]* getelementptr( [23 x i8]* @S.276 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model32LEU )  }, %target.TargetT { [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.278 )  to [0 x i8]* ), [0 x i8]* bitcast( [23 x i8]* getelementptr( [23 x i8]* @S.279 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model32LEU )  }, %target.TargetT { [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.281 )  to [0 x i8]* ), [0 x i8]* bitcast( [25 x i8]* getelementptr( [25 x i8]* @S.282 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model64LEU )  }, %target.TargetT { [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.284 )  to [0 x i8]* ), [0 x i8]* bitcast( [25 x i8]* getelementptr( [25 x i8]* @S.285 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model64LEU )  }, %target.TargetT { [0 x i8]* bitcast( [14 x i8]* getelementptr( [14 x i8]* @S.287 )  to [0 x i8]* ), [0 x i8]* bitcast( [22 x i8]* getelementptr( [22 x i8]* @S.288 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model64LEU )  }, %target.TargetT { [0 x i8]* bitcast( [10 x i8]* getelementptr( [10 x i8]* @S.290 )  to [0 x i8]* ), [0 x i8]* bitcast( [25 x i8]* getelementptr( [25 x i8]* @S.291 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model32LEU )  }, %target.TargetT { [0 x i8]* bitcast( [10 x i8]* getelementptr( [10 x i8]* @S.293 )  to [0 x i8]* ), [0 x i8]* bitcast( [25 x i8]* getelementptr( [25 x i8]* @S.294 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model32LEU )  }, %target.TargetT { [0 x i8]* bitcast( [16 x i8]* getelementptr( [16 x i8]* @S.296 )  to [0 x i8]* ), [0 x i8]* bitcast( [25 x i8]* getelementptr( [25 x i8]* @S.297 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model32LEA )  }, %target.TargetT { [0 x i8]* bitcast( [10 x i8]* getelementptr( [10 x i8]* @S.299 )  to [0 x i8]* ), [0 x i8]* bitcast( [25 x i8]* getelementptr( [25 x i8]* @S.300 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model32LEU )  }, %target.TargetT { [0 x i8]* bitcast( [8 x i8]* getelementptr( [8 x i8]* @S.302 )  to [0 x i8]* ), [0 x i8]* bitcast( [22 x i8]* getelementptr( [22 x i8]* @S.303 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model32LEA )  }, %target.TargetT { [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.305 )  to [0 x i8]* ), [0 x i8]* bitcast( [21 x i8]* getelementptr( [21 x i8]* @S.306 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model32BEA )  }, %target.TargetT { [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.308 )  to [0 x i8]* ), [0 x i8]* bitcast( [21 x i8]* getelementptr( [21 x i8]* @S.309 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model32LEA )  }, %target.TargetT { [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.311 )  to [0 x i8]* ), [0 x i8]* bitcast( [22 x i8]* getelementptr( [22 x i8]* @S.312 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model32LEA )  }, %target.TargetT { [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.314 )  to [0 x i8]* ), [0 x i8]* bitcast( [21 x i8]* getelementptr( [21 x i8]* @S.315 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model32LEA )  }, %target.TargetT { [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.317 )  to [0 x i8]* ), [0 x i8]* bitcast( [20 x i8]* getelementptr( [20 x i8]* @S.318 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model32BEA )  }, %target.TargetT { [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.320 )  to [0 x i8]* ), [0 x i8]* bitcast( [20 x i8]* getelementptr( [20 x i8]* @S.321 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model64BEA )  }, %target.TargetT { [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.323 )  to [0 x i8]* ), [0 x i8]* bitcast( [22 x i8]* getelementptr( [22 x i8]* @S.324 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model64BEA )  }, %target.TargetT { [0 x i8]* bitcast( [8 x i8]* getelementptr( [8 x i8]* @S.326 )  to [0 x i8]* ), [0 x i8]* bitcast( [22 x i8]* getelementptr( [22 x i8]* @S.327 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model64BEA )  }, %target.TargetT { [0 x i8]* bitcast( [8 x i8]* getelementptr( [8 x i8]* @S.329 )  to [0 x i8]* ), [0 x i8]* bitcast( [22 x i8]* getelementptr( [22 x i8]* @S.330 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model64LEU )  }, %target.TargetT { [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.332 )  to [0 x i8]* ), [0 x i8]* bitcast( [23 x i8]* getelementptr( [23 x i8]* @S.333 )  to [0 x i8]* ), %target.ModelT* getelementptr( %target.ModelT* @target_Model16LEA )  } ], align 4
@target_Target = internal global %target.ModelT* zeroinitializer, align 4
@S.334 = internal constant [42 x i8] c"Supported targets and generated triples:\0A\00"
@S.335 = internal constant [3 x i8] c": \00"
define internal void @target_list() nounwind {
L.0:
	%i = alloca i32
	%0 = getelementptr [42 x i8]* @S.334
	%1 = bitcast [42 x i8]* %0 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %1)
	store i32 0, i32* %i
	br label %L.1
L.1:
	%2 = load i32* %i
	%3 = icmp ult i32 %2, 23
	%4 = xor i1 %3, true
	br i1 %4, label %L.2, label %L.3
L.3:
	%5 = load i32* %i
	%6 = getelementptr [23 x %target.TargetT]* @target_Targets, i32 0, i32 %5
	%7 = getelementptr %target.TargetT* %6, i32 0, i32 0
	%8 = load [0 x i8]** %7
	%9 = bitcast [0 x i8]* %8 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %9)
	%10 = getelementptr [3 x i8]* @S.335
	%11 = bitcast [3 x i8]* %10 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %11)
	%12 = load i32* %i
	%13 = getelementptr [23 x %target.TargetT]* @target_Targets, i32 0, i32 %12
	%14 = getelementptr %target.TargetT* %13, i32 0, i32 1
	%15 = load [0 x i8]** %14
	%16 = bitcast [0 x i8]* %15 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %16)
	call void @sys_fildes_nl(i32 2)
	%17 = load i32* %i
	%18 = add i32 %17, 1
	store i32 %18, i32* %i
	br label %L.1
L.2:
	br label %return
return:
	ret void
}
define internal zeroext i8 @target_set([0 x i8]* %name$) nounwind {
L.0:
	%rv.0 = alloca i8
	%name = alloca [0 x i8]*
	store [0 x i8]* %name$, [0 x i8]** %name
	%i = alloca i32
	%0 = load [0 x i8]** %name
	%1 = icmp eq [0 x i8]* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = bitcast [4 x i8]* @target_DefaultTarget to [0 x i8]*
	store [0 x i8]* %2, [0 x i8]** %name
	br label %L.1
L.1:
	store i32 0, i32* %i
	br label %L.3
L.3:
	%3 = load i32* %i
	%4 = icmp ult i32 %3, 23
	%5 = xor i1 %4, true
	br i1 %5, label %L.4, label %L.5
L.5:
	%6 = load [0 x i8]** %name
	%7 = bitcast [0 x i8]* %6 to [0 x i8]*
	%8 = load i32* %i
	%9 = getelementptr [23 x %target.TargetT]* @target_Targets, i32 0, i32 %8
	%10 = getelementptr %target.TargetT* %9, i32 0, i32 0
	%11 = load [0 x i8]** %10
	%12 = bitcast [0 x i8]* %11 to [0 x i8]*
	%13 = call i8 @zstr_eq([0 x i8]* %7, [0 x i8]* %12, i32 255)
	%14 = icmp ne i8 %13, 0
	br i1 %14, label %L.7, label %L.6
L.7:
	%15 = load i32* %i
	%16 = getelementptr [23 x %target.TargetT]* @target_Targets, i32 0, i32 %15
	%17 = getelementptr %target.TargetT* %16, i32 0, i32 2
	%18 = load %target.ModelT** %17
	%19 = bitcast %target.ModelT* %18 to %target.ModelT*
	store %target.ModelT* %19, %target.ModelT** @target_Target
	%20 = load i32* %i
	%21 = getelementptr [23 x %target.TargetT]* @target_Targets, i32 0, i32 %20
	%22 = getelementptr %target.TargetT* %21, i32 0, i32 0
	%23 = load [0 x i8]** %22
	%24 = bitcast [0 x i8]* %23 to [0 x i8]*
	store [0 x i8]* %24, [0 x i8]** @target_TargetName
	%25 = load i32* %i
	%26 = getelementptr [23 x %target.TargetT]* @target_Targets, i32 0, i32 %25
	%27 = getelementptr %target.TargetT* %26, i32 0, i32 1
	%28 = load [0 x i8]** %27
	%29 = bitcast [0 x i8]* %28 to [0 x i8]*
	store [0 x i8]* %29, [0 x i8]** @target_Triple
	store i8 1, i8* %rv.0
	br label %return
L.6:
	%30 = load i32* %i
	%31 = add i32 %30, 1
	store i32 %31, i32* %i
	br label %L.3
L.4:
	store i8 0, i8* %rv.0
	br label %return
return:
	%32 = load i8* %rv.0
	ret i8 %32
}
define internal i32 @target_isize(i32 %bits$) nounwind {
L.0:
	%rv.0 = alloca i32
	%bits = alloca i32
	store i32 %bits$, i32* %bits
	%i = alloca i8
	store i8 0, i8* %i
	br label %L.1
L.1:
	%0 = load i8* %i
	%1 = load %target.ModelT** @target_Target
	%2 = getelementptr %target.ModelT* %1, i32 0, i32 5
	%3 = load i8* %2
	%4 = icmp ult i8 %0, %3
	br i1 %4, label %L.4, label %L.5
L.4:
	%5 = load %target.ModelT** @target_Target
	%6 = getelementptr %target.ModelT* %5, i32 0, i32 7
	%7 = load i8* %i
	%8 = zext i8 %7 to i32
	%9 = getelementptr [6 x %target.SizeAlign]* %6, i32 0, i32 %8
	%10 = getelementptr %target.SizeAlign* %9, i32 0, i32 0
	%11 = load i8* %10
	%12 = zext i8 %11 to i32
	%13 = load i32* %bits
	%14 = icmp ult i32 %12, %13
	br label %L.5
L.5:
	%15 = phi i1 [ false, %L.1 ], [ %14, %L.4 ]
	%16 = xor i1 %15, true
	br i1 %16, label %L.2, label %L.3
L.3:
	%17 = load i8* %i
	%18 = add i8 %17, 1
	store i8 %18, i8* %i
	br label %L.1
L.2:
	%19 = load %target.ModelT** @target_Target
	%20 = getelementptr %target.ModelT* %19, i32 0, i32 7
	%21 = load i8* %i
	%22 = zext i8 %21 to i32
	%23 = getelementptr [6 x %target.SizeAlign]* %20, i32 0, i32 %22
	%24 = getelementptr %target.SizeAlign* %23, i32 0, i32 0
	%25 = load i8* %24
	%26 = zext i8 %25 to i32
	store i32 %26, i32* %rv.0
	br label %return
return:
	%27 = load i32* %rv.0
	ret i32 %27
}
define internal i32 @target_ialign(i32 %bits$) nounwind {
L.0:
	%rv.0 = alloca i32
	%bits = alloca i32
	store i32 %bits$, i32* %bits
	%i = alloca i8
	store i8 0, i8* %i
	br label %L.1
L.1:
	%0 = load i8* %i
	%1 = load %target.ModelT** @target_Target
	%2 = getelementptr %target.ModelT* %1, i32 0, i32 5
	%3 = load i8* %2
	%4 = icmp ult i8 %0, %3
	br i1 %4, label %L.4, label %L.5
L.4:
	%5 = load %target.ModelT** @target_Target
	%6 = getelementptr %target.ModelT* %5, i32 0, i32 7
	%7 = load i8* %i
	%8 = zext i8 %7 to i32
	%9 = getelementptr [6 x %target.SizeAlign]* %6, i32 0, i32 %8
	%10 = getelementptr %target.SizeAlign* %9, i32 0, i32 0
	%11 = load i8* %10
	%12 = zext i8 %11 to i32
	%13 = load i32* %bits
	%14 = icmp ult i32 %12, %13
	br label %L.5
L.5:
	%15 = phi i1 [ false, %L.1 ], [ %14, %L.4 ]
	%16 = xor i1 %15, true
	br i1 %16, label %L.2, label %L.3
L.3:
	%17 = load i8* %i
	%18 = add i8 %17, 1
	store i8 %18, i8* %i
	br label %L.1
L.2:
	%19 = load %target.ModelT** @target_Target
	%20 = getelementptr %target.ModelT* %19, i32 0, i32 7
	%21 = load i8* %i
	%22 = zext i8 %21 to i32
	%23 = getelementptr [6 x %target.SizeAlign]* %20, i32 0, i32 %22
	%24 = getelementptr %target.SizeAlign* %23, i32 0, i32 1
	%25 = load i8* %24
	%26 = zext i8 %25 to i32
	store i32 %26, i32* %rv.0
	br label %return
return:
	%27 = load i32* %rv.0
	ret i32 %27
}
define internal %type.TypeNode* @target_utype(i32 %bits$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%bits = alloca i32
	store i32 %bits$, i32* %bits
	%i = alloca i8
	store i8 0, i8* %i
	br label %L.1
L.1:
	%0 = load i8* %i
	%1 = load %target.ModelT** @target_Target
	%2 = getelementptr %target.ModelT* %1, i32 0, i32 5
	%3 = load i8* %2
	%4 = icmp ult i8 %0, %3
	br i1 %4, label %L.4, label %L.5
L.4:
	%5 = load %target.ModelT** @target_Target
	%6 = getelementptr %target.ModelT* %5, i32 0, i32 7
	%7 = load i8* %i
	%8 = zext i8 %7 to i32
	%9 = getelementptr [6 x %target.SizeAlign]* %6, i32 0, i32 %8
	%10 = getelementptr %target.SizeAlign* %9, i32 0, i32 0
	%11 = load i8* %10
	%12 = zext i8 %11 to i32
	%13 = load i32* %bits
	%14 = icmp ult i32 %12, %13
	br label %L.5
L.5:
	%15 = phi i1 [ false, %L.1 ], [ %14, %L.4 ]
	%16 = xor i1 %15, true
	br i1 %16, label %L.2, label %L.3
L.3:
	%17 = load i8* %i
	%18 = add i8 %17, 1
	store i8 %18, i8* %i
	br label %L.1
L.2:
	%19 = load i8* %i
	%20 = zext i8 %19 to i32
	%21 = getelementptr [6 x %type.TypeNode*]* @type_uinttypes, i32 0, i32 %20
	%22 = load %type.TypeNode** %21
	store %type.TypeNode* %22, %type.TypeNode** %rv.0
	br label %return
return:
	%23 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %23
}
define internal %type.TypeNode* @target_stype(i32 %bits$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%bits = alloca i32
	store i32 %bits$, i32* %bits
	%i = alloca i8
	store i8 0, i8* %i
	br label %L.1
L.1:
	%0 = load i8* %i
	%1 = load %target.ModelT** @target_Target
	%2 = getelementptr %target.ModelT* %1, i32 0, i32 5
	%3 = load i8* %2
	%4 = icmp ult i8 %0, %3
	br i1 %4, label %L.4, label %L.5
L.4:
	%5 = load %target.ModelT** @target_Target
	%6 = getelementptr %target.ModelT* %5, i32 0, i32 7
	%7 = load i8* %i
	%8 = zext i8 %7 to i32
	%9 = getelementptr [6 x %target.SizeAlign]* %6, i32 0, i32 %8
	%10 = getelementptr %target.SizeAlign* %9, i32 0, i32 0
	%11 = load i8* %10
	%12 = zext i8 %11 to i32
	%13 = load i32* %bits
	%14 = icmp ult i32 %12, %13
	br label %L.5
L.5:
	%15 = phi i1 [ false, %L.1 ], [ %14, %L.4 ]
	%16 = xor i1 %15, true
	br i1 %16, label %L.2, label %L.3
L.3:
	%17 = load i8* %i
	%18 = add i8 %17, 1
	store i8 %18, i8* %i
	br label %L.1
L.2:
	%19 = load i8* %i
	%20 = zext i8 %19 to i32
	%21 = getelementptr [6 x %type.TypeNode*]* @type_inttypes, i32 0, i32 %20
	%22 = load %type.TypeNode** %21
	store %type.TypeNode* %22, %type.TypeNode** %rv.0
	br label %return
return:
	%23 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %23
}
@symb_NestMax = internal constant i32 31, align 4
@symb_level = internal global i8 0, align 1
@symb_curpack = internal global %symb.SymbNode* zeroinitializer, align 4
@symb_curproc = internal global %symb.SymbNode* zeroinitializer, align 4
@symb_libnew = internal global %symb.SymbNode* zeroinitializer, align 4
@symb_libnewnz = internal global %symb.SymbNode* zeroinitializer, align 4
@symb_libdel = internal global %symb.SymbNode* zeroinitializer, align 4
%symb.symblist = type {%symb.SymbNode*, %symb.SymbNode*, %symb.SymbNode*}
@symb_symbs = internal global [32 x %symb.symblist] zeroinitializer, align 4
@S.336 = internal constant [2 x i8] c"_\00"
define internal zeroext i8 @symb_IsAnon([0 x i8]* %id$) nounwind {
L.0:
	%rv.0 = alloca i8
	%id = alloca [0 x i8]*
	store [0 x i8]* %id$, [0 x i8]** %id
	%0 = load [0 x i8]** %id
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = getelementptr [2 x i8]* @S.336
	%3 = bitcast [2 x i8]* %2 to [0 x i8]*
	%4 = call i8 @zstr_eq([0 x i8]* %1, [0 x i8]* %3, i32 255)
	store i8 %4, i8* %rv.0
	br label %return
return:
	%5 = load i8* %rv.0
	ret i8 %5
}
define internal zeroext i8 @symb_IsUTF8([0 x i8]* %id$) nounwind {
L.0:
	%rv.0 = alloca i8
	%id = alloca [0 x i8]*
	store [0 x i8]* %id$, [0 x i8]** %id
	%i = alloca i32
	store i32 0, i32* %i
	br label %L.1
L.1:
	%0 = load [0 x i8]** %id
	%1 = load i32* %i
	%2 = getelementptr [0 x i8]* %0, i32 0, i32 %1
	%3 = load i8* %2
	%4 = icmp ne i8 %3, 0
	%5 = xor i1 %4, true
	br i1 %5, label %L.2, label %L.3
L.3:
	%6 = load [0 x i8]** %id
	%7 = load i32* %i
	%8 = getelementptr [0 x i8]* %6, i32 0, i32 %7
	%9 = load i8* %8
	%10 = icmp ugt i8 %9, 127
	br i1 %10, label %L.5, label %L.4
L.5:
	store i8 1, i8* %rv.0
	br label %return
L.4:
	%11 = load i32* %i
	%12 = add i32 %11, 1
	store i32 %12, i32* %i
	br label %L.1
L.2:
	store i8 0, i8* %rv.0
	br label %return
return:
	%13 = load i8* %rv.0
	ret i8 %13
}
define internal zeroext i8 @symb_IsUniqueLocal(%symb.SymbNode* %s$, [0 x i8]* %id$) nounwind {
L.0:
	%rv.0 = alloca i8
	%s = alloca %symb.SymbNode*
	%id = alloca [0 x i8]*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store [0 x i8]* %id$, [0 x i8]** %id
	%0 = load [0 x i8]** %id
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = call i8 @symb_IsAnon([0 x i8]* %1)
	%3 = icmp ne i8 %2, 0
	br i1 %3, label %L.2, label %L.1
L.2:
	store i8 1, i8* %rv.0
	br label %return
L.1:
	br label %L.3
L.3:
	%4 = load %symb.SymbNode** %s
	%5 = icmp ne %symb.SymbNode* %4, null
	%6 = xor i1 %5, true
	br i1 %6, label %L.4, label %L.5
L.5:
	%7 = load %symb.SymbNode** %s
	%8 = getelementptr %symb.SymbNode* %7, i32 0, i32 22
	%9 = getelementptr [0 x i8]* %8
	%10 = bitcast [0 x i8]* %9 to [0 x i8]*
	%11 = load [0 x i8]** %id
	%12 = bitcast [0 x i8]* %11 to [0 x i8]*
	%13 = call i8 @zstr_eq([0 x i8]* %10, [0 x i8]* %12, i32 255)
	%14 = icmp ne i8 %13, 0
	br i1 %14, label %L.7, label %L.6
L.7:
	store i8 0, i8* %rv.0
	br label %return
L.6:
	%15 = load %symb.SymbNode** %s
	%16 = getelementptr %symb.SymbNode* %15, i32 0, i32 0
	%17 = load %symb.SymbNode** %16
	%18 = bitcast %symb.SymbNode* %17 to %symb.SymbNode*
	store %symb.SymbNode* %18, %symb.SymbNode** %s
	br label %L.3
L.4:
	store i8 1, i8* %rv.0
	br label %return
return:
	%19 = load i8* %rv.0
	ret i8 %19
}
define internal %symb.SymbNode* @symb_FindThisLevel([0 x i8]* %name$) nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%name = alloca [0 x i8]*
	store [0 x i8]* %name$, [0 x i8]** %name
	%s = alloca %symb.SymbNode*
	%0 = load i8* @symb_level
	%1 = zext i8 %0 to i32
	%2 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %1
	%3 = getelementptr %symb.symblist* %2, i32 0, i32 0
	%4 = load %symb.SymbNode** %3
	store %symb.SymbNode* %4, %symb.SymbNode** %s
	br label %L.1
L.1:
	%5 = load %symb.SymbNode** %s
	%6 = icmp ne %symb.SymbNode* %5, null
	br i1 %6, label %L.4, label %L.5
L.4:
	%7 = load %symb.SymbNode** %s
	%8 = getelementptr %symb.SymbNode* %7, i32 0, i32 22
	%9 = getelementptr [0 x i8]* %8
	%10 = bitcast [0 x i8]* %9 to [0 x i8]*
	%11 = load [0 x i8]** %name
	%12 = bitcast [0 x i8]* %11 to [0 x i8]*
	%13 = call i8 @zstr_eq([0 x i8]* %10, [0 x i8]* %12, i32 255)
	%14 = icmp ne i8 %13, 0
	%15 = xor i1 %14, true
	br label %L.5
L.5:
	%16 = phi i1 [ false, %L.1 ], [ %15, %L.4 ]
	%17 = xor i1 %16, true
	br i1 %17, label %L.2, label %L.3
L.3:
	%18 = load %symb.SymbNode** %s
	%19 = getelementptr %symb.SymbNode* %18, i32 0, i32 0
	%20 = load %symb.SymbNode** %19
	%21 = bitcast %symb.SymbNode* %20 to %symb.SymbNode*
	store %symb.SymbNode* %21, %symb.SymbNode** %s
	br label %L.1
L.2:
	%22 = load %symb.SymbNode** %s
	store %symb.SymbNode* %22, %symb.SymbNode** %rv.0
	br label %return
return:
	%23 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %23
}
define internal void @symb_MakeVisible(%symb.SymbNode* %s$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%0 = load i8* @symb_level
	%1 = zext i8 %0 to i32
	%2 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %1
	%3 = getelementptr %symb.symblist* %2, i32 0, i32 0
	%4 = load %symb.SymbNode** %3
	%5 = icmp eq %symb.SymbNode* %4, null
	br i1 %5, label %L.2, label %L.3
L.2:
	%6 = load %symb.SymbNode** %s
	%7 = load i8* @symb_level
	%8 = zext i8 %7 to i32
	%9 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %8
	%10 = getelementptr %symb.symblist* %9, i32 0, i32 0
	store %symb.SymbNode* %6, %symb.SymbNode** %10
	br label %L.1
L.3:
	%11 = load %symb.SymbNode** %s
	%12 = bitcast %symb.SymbNode* %11 to %symb.SymbNode*
	%13 = load i8* @symb_level
	%14 = zext i8 %13 to i32
	%15 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %14
	%16 = getelementptr %symb.symblist* %15, i32 0, i32 1
	%17 = load %symb.SymbNode** %16
	%18 = getelementptr %symb.SymbNode* %17, i32 0, i32 0
	store %symb.SymbNode* %12, %symb.SymbNode** %18
	br label %L.1
L.1:
	%19 = load %symb.SymbNode** %s
	%20 = load i8* @symb_level
	%21 = zext i8 %20 to i32
	%22 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %21
	%23 = getelementptr %symb.symblist* %22, i32 0, i32 1
	store %symb.SymbNode* %19, %symb.SymbNode** %23
	br label %return
return:
	ret void
}
define internal %symb.SymbNode* @symb_New(i8 zeroext %kind$, [0 x i8]* %name$, i8 zeroext %vis$) nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%kind = alloca i8
	%name = alloca [0 x i8]*
	%vis = alloca i8
	store i8 %kind$, i8* %kind
	store [0 x i8]* %name$, [0 x i8]** %name
	store i8 %vis$, i8* %vis
	%s = alloca %symb.SymbNode*
	store %symb.SymbNode* null, %symb.SymbNode** %s
	%0 = load i8* %vis
	%1 = icmp ne i8 %0, 2
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load i8* @symb_level
	%3 = zext i8 %2 to i32
	%4 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %3
	%5 = getelementptr %symb.symblist* %4, i32 0, i32 0
	%6 = load %symb.SymbNode** %5
	store %symb.SymbNode* %6, %symb.SymbNode** %s
	br label %L.3
L.3:
	%7 = load %symb.SymbNode** %s
	%8 = icmp ne %symb.SymbNode* %7, null
	br i1 %8, label %L.6, label %L.7
L.6:
	%9 = load %symb.SymbNode** %s
	%10 = getelementptr %symb.SymbNode* %9, i32 0, i32 22
	%11 = getelementptr [0 x i8]* %10
	%12 = bitcast [0 x i8]* %11 to [0 x i8]*
	%13 = load [0 x i8]** %name
	%14 = bitcast [0 x i8]* %13 to [0 x i8]*
	%15 = call i8 @zstr_eq([0 x i8]* %12, [0 x i8]* %14, i32 255)
	%16 = icmp ne i8 %15, 0
	%17 = xor i1 %16, true
	br label %L.7
L.7:
	%18 = phi i1 [ false, %L.3 ], [ %17, %L.6 ]
	%19 = xor i1 %18, true
	br i1 %19, label %L.4, label %L.5
L.5:
	%20 = load %symb.SymbNode** %s
	%21 = getelementptr %symb.SymbNode* %20, i32 0, i32 0
	%22 = load %symb.SymbNode** %21
	%23 = bitcast %symb.SymbNode* %22 to %symb.SymbNode*
	store %symb.SymbNode* %23, %symb.SymbNode** %s
	br label %L.3
L.4:
	br label %L.1
L.1:
	%24 = load %symb.SymbNode** %s
	%25 = icmp ne %symb.SymbNode* %24, null
	br i1 %25, label %L.9, label %L.8
L.9:
	%26 = load %symb.SymbNode** %s
	%27 = getelementptr %symb.SymbNode* %26, i32 0, i32 15
	%28 = load i8* %27
	%29 = icmp ne i8 %28, 0
	br i1 %29, label %L.11, label %L.12
L.11:
	%30 = load %symb.SymbNode** %s
	store %symb.SymbNode* %30, %symb.SymbNode** %rv.0
	br label %return
L.12:
	%31 = load [0 x i8]** %name
	%32 = bitcast [0 x i8]* %31 to [0 x i8]*
	call void @lex_ErrorI(i8 20, [0 x i8]* %32)
	br label %L.10
L.10:
	br label %L.8
L.8:
	%33 = load [0 x i8]** %name
	%34 = bitcast [0 x i8]* %33 to [0 x i8]*
	%35 = call i32 @zstr_len([0 x i8]* %34, i32 255)
	%36 = add i32 60, %35
	%37 = add i32 %36, 1
	%38 = call [0 x i8]* @malloc(i32 %37)
	%39 = bitcast [0 x i8]* %38 to %symb.SymbNode*
	store %symb.SymbNode* %39, %symb.SymbNode** %s
	%40 = load %symb.SymbNode** %s
	%41 = getelementptr %symb.SymbNode* %40, i32 0, i32 22
	%42 = getelementptr [0 x i8]* %41
	%43 = bitcast [0 x i8]* %42 to [0 x i8]*
	%44 = load [0 x i8]** %name
	%45 = bitcast [0 x i8]* %44 to [0 x i8]*
	call void @zstr_copy([0 x i8]* %43, [0 x i8]* %45, i32 255)
	%46 = load [0 x i8]** %name
	%47 = bitcast [0 x i8]* %46 to [0 x i8]*
	%48 = call i8 @symb_IsUTF8([0 x i8]* %47)
	%49 = load %symb.SymbNode** %s
	%50 = getelementptr %symb.SymbNode* %49, i32 0, i32 20
	store i8 %48, i8* %50
	%51 = load i8* %kind
	%52 = load %symb.SymbNode** %s
	%53 = getelementptr %symb.SymbNode* %52, i32 0, i32 13
	store i8 %51, i8* %53
	%54 = load %symb.SymbNode** %s
	%55 = getelementptr %symb.SymbNode* %54, i32 0, i32 0
	store %symb.SymbNode* null, %symb.SymbNode** %55
	%56 = load %symb.SymbNode** @symb_curproc
	%57 = icmp ne %symb.SymbNode* %56, null
	br i1 %57, label %L.14, label %L.15
L.14:
	%58 = load %symb.SymbNode** %s
	%59 = getelementptr %symb.SymbNode* %58, i32 0, i32 14
	store i8 1, i8* %59
	%60 = load %symb.SymbNode** @symb_curproc
	%61 = bitcast %symb.SymbNode* %60 to %symb.SymbNode*
	%62 = load %symb.SymbNode** %s
	%63 = getelementptr %symb.SymbNode* %62, i32 0, i32 2
	store %symb.SymbNode* %61, %symb.SymbNode** %63
	br label %L.13
L.15:
	%64 = load %symb.SymbNode** @symb_curpack
	%65 = icmp ne %symb.SymbNode* %64, null
	br i1 %65, label %L.17, label %L.18
L.17:
	%66 = load %symb.SymbNode** %s
	%67 = getelementptr %symb.SymbNode* %66, i32 0, i32 14
	store i8 2, i8* %67
	%68 = load %symb.SymbNode** @symb_curpack
	%69 = bitcast %symb.SymbNode* %68 to %symb.SymbNode*
	%70 = load %symb.SymbNode** %s
	%71 = getelementptr %symb.SymbNode* %70, i32 0, i32 2
	store %symb.SymbNode* %69, %symb.SymbNode** %71
	br label %L.16
L.18:
	%72 = load %symb.SymbNode** %s
	%73 = getelementptr %symb.SymbNode* %72, i32 0, i32 14
	store i8 3, i8* %73
	%74 = load %symb.SymbNode** %s
	%75 = getelementptr %symb.SymbNode* %74, i32 0, i32 2
	store %symb.SymbNode* null, %symb.SymbNode** %75
	br label %L.16
L.16:
	br label %L.13
L.13:
	%76 = call i16 @lex_Lineno()
	%77 = load %symb.SymbNode** %s
	%78 = getelementptr %symb.SymbNode* %77, i32 0, i32 11
	store i16 %76, i16* %78
	%79 = load i8* %vis
	%80 = icmp eq i8 %79, 0
	br i1 %80, label %L.20, label %L.19
L.20:
	%81 = load %symb.SymbNode** %s
	call void @symb_MakeVisible(%symb.SymbNode* %81)
	br label %L.19
L.19:
	%82 = load %symb.SymbNode** %s
	store %symb.SymbNode* %82, %symb.SymbNode** %rv.0
	br label %return
return:
	%83 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %83
}
@S.337 = internal constant [2 x i8] c"/\00"
define internal %symb.SymbNode* @symb_NewFile([0 x i8]* %path$, [0 x i8]* %file$) nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%path = alloca [0 x i8]*
	%file = alloca [0 x i8]*
	store [0 x i8]* %path$, [0 x i8]** %path
	store [0 x i8]* %file$, [0 x i8]** %file
	%full = alloca [1024 x i8]
	%0 = bitcast [1024 x i8]* %full to [0 x i8]*
	%1 = load [0 x i8]** %path
	%2 = bitcast [0 x i8]* %1 to [0 x i8]*
	call void @zstr_copy([0 x i8]* %0, [0 x i8]* %2, i32 1024)
	%3 = bitcast [1024 x i8]* %full to [0 x i8]*
	%4 = getelementptr [2 x i8]* @S.337
	%5 = bitcast [2 x i8]* %4 to [0 x i8]*
	call void @zstr_cat([0 x i8]* %3, [0 x i8]* %5, i32 1024)
	%6 = bitcast [1024 x i8]* %full to [0 x i8]*
	%7 = load [0 x i8]** %file
	%8 = bitcast [0 x i8]* %7 to [0 x i8]*
	call void @zstr_cat([0 x i8]* %6, [0 x i8]* %8, i32 1024)
	%9 = bitcast [1024 x i8]* %full to [0 x i8]*
	%10 = call %symb.SymbNode* @symb_New(i8 7, [0 x i8]* %9, i8 2)
	store %symb.SymbNode* %10, %symb.SymbNode** %rv.0
	br label %return
return:
	%11 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %11
}
define internal %symb.SymbNode* @symb_NewString([0 x i8]* %string$) nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%string = alloca [0 x i8]*
	store [0 x i8]* %string$, [0 x i8]** %string
	%s = alloca %symb.SymbNode*
	%len = alloca i32
	%0 = load [0 x i8]** %string
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = call i32 @zstr_len([0 x i8]* %1, i32 4095)
	store i32 %2, i32* %len
	%3 = load i32* %len
	%4 = add i32 60, %3
	%5 = add i32 %4, 1
	%6 = call [0 x i8]* @malloc(i32 %5)
	%7 = bitcast [0 x i8]* %6 to %symb.SymbNode*
	store %symb.SymbNode* %7, %symb.SymbNode** %s
	%8 = load %symb.SymbNode** %s
	%9 = bitcast %symb.SymbNode* %8 to i8*
	call void @llvm.memset.p0i8.i32(i8* %9, i8 0, i32 60, i32 4, i1 0)
	%10 = load %symb.SymbNode** %s
	%11 = getelementptr %symb.SymbNode* %10, i32 0, i32 22
	%12 = getelementptr [0 x i8]* %11
	%13 = bitcast [0 x i8]* %12 to [0 x i8]*
	%14 = load [0 x i8]** %string
	%15 = bitcast [0 x i8]* %14 to [0 x i8]*
	call void @zstr_copy([0 x i8]* %13, [0 x i8]* %15, i32 4095)
	%16 = load %symb.SymbNode** %s
	%17 = getelementptr %symb.SymbNode* %16, i32 0, i32 13
	store i8 9, i8* %17
	%18 = call i16 @lex_Lineno()
	%19 = load %symb.SymbNode** %s
	%20 = getelementptr %symb.SymbNode* %19, i32 0, i32 11
	store i16 %18, i16* %20
	%21 = load %symb.SymbNode** %s
	store %symb.SymbNode* %21, %symb.SymbNode** %rv.0
	br label %return
return:
	%22 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %22
}
define internal %symb.SymbNode* @symb_Clone(%symb.SymbNode* %os$, [0 x i8]* %name$) nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%os = alloca %symb.SymbNode*
	%name = alloca [0 x i8]*
	store %symb.SymbNode* %os$, %symb.SymbNode** %os
	store [0 x i8]* %name$, [0 x i8]** %name
	%ns = alloca %symb.SymbNode*
	%0 = load [0 x i8]** %name
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = call %symb.SymbNode* @symb_New(i8 8, [0 x i8]* %1, i8 0)
	store %symb.SymbNode* %2, %symb.SymbNode** %ns
	%3 = load %symb.SymbNode** %os
	%4 = bitcast %symb.SymbNode* %3 to %symb.SymbNode*
	%5 = load %symb.SymbNode** %ns
	%6 = getelementptr %symb.SymbNode* %5, i32 0, i32 5
	store %symb.SymbNode* %4, %symb.SymbNode** %6
	%7 = load %symb.SymbNode** %ns
	store %symb.SymbNode* %7, %symb.SymbNode** %rv.0
	br label %return
return:
	%8 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %8
}
define internal %symb.SymbNode* @symb_FindLocal(%symb.SymbNode* %as$, [0 x i8]* %name$) nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%as = alloca %symb.SymbNode*
	%name = alloca [0 x i8]*
	store %symb.SymbNode* %as$, %symb.SymbNode** %as
	store [0 x i8]* %name$, [0 x i8]** %name
	%s = alloca %symb.SymbNode*
	%0 = load %symb.SymbNode** %as
	store %symb.SymbNode* %0, %symb.SymbNode** %s
	br label %L.1
L.1:
	%1 = load %symb.SymbNode** %s
	%2 = icmp ne %symb.SymbNode* %1, null
	%3 = xor i1 %2, true
	br i1 %3, label %L.2, label %L.3
L.3:
	%4 = load %symb.SymbNode** %s
	%5 = getelementptr %symb.SymbNode* %4, i32 0, i32 22
	%6 = getelementptr [0 x i8]* %5
	%7 = bitcast [0 x i8]* %6 to [0 x i8]*
	%8 = load [0 x i8]** %name
	%9 = bitcast [0 x i8]* %8 to [0 x i8]*
	%10 = call i8 @zstr_eq([0 x i8]* %7, [0 x i8]* %9, i32 255)
	%11 = icmp ne i8 %10, 0
	br i1 %11, label %L.5, label %L.4
L.5:
	%12 = load %symb.SymbNode** %s
	%13 = getelementptr %symb.SymbNode* %12, i32 0, i32 13
	%14 = load i8* %13
	%15 = icmp eq i8 %14, 8
	br i1 %15, label %L.7, label %L.6
L.7:
	%16 = load %symb.SymbNode** %s
	%17 = getelementptr %symb.SymbNode* %16, i32 0, i32 5
	%18 = load %symb.SymbNode** %17
	%19 = bitcast %symb.SymbNode* %18 to %symb.SymbNode*
	store %symb.SymbNode* %19, %symb.SymbNode** %s
	br label %L.6
L.6:
	%20 = load %symb.SymbNode** %s
	store %symb.SymbNode* %20, %symb.SymbNode** %rv.0
	br label %return
L.4:
	%21 = load %symb.SymbNode** %s
	%22 = getelementptr %symb.SymbNode* %21, i32 0, i32 0
	%23 = load %symb.SymbNode** %22
	%24 = bitcast %symb.SymbNode* %23 to %symb.SymbNode*
	store %symb.SymbNode* %24, %symb.SymbNode** %s
	br label %L.1
L.2:
	%25 = load %symb.SymbNode** %s
	store %symb.SymbNode* %25, %symb.SymbNode** %rv.0
	br label %return
return:
	%26 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %26
}
define internal %symb.SymbNode* @symb_FindMethod(%symb.SymbNode* %as$, [0 x i8]* %name$) nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%as = alloca %symb.SymbNode*
	%name = alloca [0 x i8]*
	store %symb.SymbNode* %as$, %symb.SymbNode** %as
	store [0 x i8]* %name$, [0 x i8]** %name
	%s = alloca %symb.SymbNode*
	%0 = load %symb.SymbNode** %as
	store %symb.SymbNode* %0, %symb.SymbNode** %s
	br label %L.1
L.1:
	%1 = load %symb.SymbNode** %s
	%2 = icmp ne %symb.SymbNode* %1, null
	br i1 %2, label %L.4, label %L.5
L.4:
	%3 = load %symb.SymbNode** %s
	%4 = getelementptr %symb.SymbNode* %3, i32 0, i32 22
	%5 = getelementptr [0 x i8]* %4
	%6 = bitcast [0 x i8]* %5 to [0 x i8]*
	%7 = load [0 x i8]** %name
	%8 = bitcast [0 x i8]* %7 to [0 x i8]*
	%9 = call i8 @zstr_eq([0 x i8]* %6, [0 x i8]* %8, i32 255)
	%10 = icmp ne i8 %9, 0
	%11 = xor i1 %10, true
	br label %L.5
L.5:
	%12 = phi i1 [ false, %L.1 ], [ %11, %L.4 ]
	%13 = xor i1 %12, true
	br i1 %13, label %L.2, label %L.3
L.3:
	%14 = load %symb.SymbNode** %s
	%15 = getelementptr %symb.SymbNode* %14, i32 0, i32 0
	%16 = load %symb.SymbNode** %15
	%17 = bitcast %symb.SymbNode* %16 to %symb.SymbNode*
	store %symb.SymbNode* %17, %symb.SymbNode** %s
	br label %L.1
L.2:
	%18 = load %symb.SymbNode** %s
	store %symb.SymbNode* %18, %symb.SymbNode** %rv.0
	br label %return
return:
	%19 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %19
}
define internal %symb.SymbNode* @symb_FindPackage(%symb.SymbNode* %ps$) nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%ps = alloca %symb.SymbNode*
	store %symb.SymbNode* %ps$, %symb.SymbNode** %ps
	%s = alloca %symb.SymbNode*
	%fs = alloca %symb.SymbNode*
	%tok = alloca i8
	%i = alloca i32
	store %symb.SymbNode* null, %symb.SymbNode** %s
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 41
	br i1 %2, label %L.2, label %L.1
L.2:
	%3 = call i8 @lex_Next()
	store i8 %3, i8* %tok
	br label %L.1
L.1:
	br label %L.3
L.3:
	%4 = load i8* %tok
	%5 = icmp ne i8 %4, 2
	br i1 %5, label %L.6, label %L.5
L.6:
	%6 = call i8 @lex_Expect(i8 2)
	br label %L.4
L.5:
	%7 = call i8 @lex_Next()
	store i8 %7, i8* %tok
	%8 = load i8* %tok
	%9 = icmp ne i8 %8, 41
	br i1 %9, label %L.8, label %L.7
L.8:
	%10 = call i8 @lex_Expect(i8 41)
	br label %L.4
L.7:
	%11 = load %symb.SymbNode** %ps
	%12 = getelementptr %symb.SymbNode* %11, i32 0, i32 5
	%13 = load %symb.SymbNode** %12
	%14 = bitcast %symb.SymbNode* %13 to %symb.SymbNode*
	store %symb.SymbNode* %14, %symb.SymbNode** %fs
	%15 = load i8* @symb_level
	%16 = zext i8 %15 to i32
	store i32 %16, i32* %i
	br label %L.9
L.9:
	%17 = load i32* %i
	%18 = icmp ugt i32 %17, 0
	br i1 %18, label %L.12, label %L.13
L.12:
	%19 = load i32* %i
	%20 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %19
	%21 = getelementptr %symb.symblist* %20, i32 0, i32 2
	%22 = load %symb.SymbNode** %21
	%23 = load %symb.SymbNode** %ps
	%24 = icmp ne %symb.SymbNode* %22, %23
	br label %L.13
L.13:
	%25 = phi i1 [ false, %L.9 ], [ %24, %L.12 ]
	%26 = xor i1 %25, true
	br i1 %26, label %L.10, label %L.11
L.11:
	%27 = load i32* %i
	%28 = sub i32 %27, 1
	store i32 %28, i32* %i
	br label %L.9
L.10:
	%29 = load i32* %i
	%30 = icmp ne i32 %29, 0
	br i1 %30, label %L.15, label %L.14
L.15:
	%31 = load i32* %i
	%32 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %31
	%33 = getelementptr %symb.symblist* %32, i32 0, i32 0
	%34 = load %symb.SymbNode** %33
	store %symb.SymbNode* %34, %symb.SymbNode** %fs
	br label %L.14
L.14:
	%35 = load %symb.SymbNode** %fs
	%36 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%37 = call %symb.SymbNode* @symb_FindLocal(%symb.SymbNode* %35, [0 x i8]* %36)
	store %symb.SymbNode* %37, %symb.SymbNode** %s
	%38 = load %symb.SymbNode** %s
	%39 = icmp eq %symb.SymbNode* %38, null
	br i1 %39, label %L.18, label %L.17
L.17:
	%40 = load %symb.SymbNode** %s
	%41 = getelementptr %symb.SymbNode* %40, i32 0, i32 13
	%42 = load i8* %41
	%43 = icmp ne i8 %42, 6
	br label %L.18
L.18:
	%44 = phi i1 [ true, %L.14 ], [ %43, %L.17 ]
	br i1 %44, label %L.4, label %L.16
L.16:
	%45 = call i8 @lex_Next()
	store i8 %45, i8* %tok
	%46 = load %symb.SymbNode** %s
	store %symb.SymbNode* %46, %symb.SymbNode** %ps
	br label %L.3
L.4:
	%47 = load %symb.SymbNode** %s
	store %symb.SymbNode* %47, %symb.SymbNode** %rv.0
	br label %return
return:
	%48 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %48
}
define internal %symb.SymbNode* @symb_FindTop([0 x i8]* %name$) nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%name = alloca [0 x i8]*
	store [0 x i8]* %name$, [0 x i8]** %name
	%s = alloca %symb.SymbNode*
	%i = alloca i8
	%0 = load i8* @symb_level
	store i8 %0, i8* %i
	br label %L.1
L.1:
	%1 = load i8* %i
	%2 = zext i8 %1 to i32
	%3 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %2
	%4 = getelementptr %symb.symblist* %3, i32 0, i32 0
	%5 = load %symb.SymbNode** %4
	%6 = load [0 x i8]** %name
	%7 = bitcast [0 x i8]* %6 to [0 x i8]*
	%8 = call %symb.SymbNode* @symb_FindLocal(%symb.SymbNode* %5, [0 x i8]* %7)
	store %symb.SymbNode* %8, %symb.SymbNode** %s
	%9 = load %symb.SymbNode** %s
	%10 = icmp ne %symb.SymbNode* %9, null
	br i1 %10, label %L.4, label %L.3
L.4:
	%11 = load %symb.SymbNode** %s
	%12 = getelementptr %symb.SymbNode* %11, i32 0, i32 19
	store i8 1, i8* %12
	%13 = load %symb.SymbNode** %s
	store %symb.SymbNode* %13, %symb.SymbNode** %rv.0
	br label %return
L.3:
	%14 = load i8* %i
	%15 = icmp eq i8 %14, 0
	br i1 %15, label %L.2, label %L.5
L.5:
	%16 = load i8* %i
	%17 = sub i8 %16, 1
	store i8 %17, i8* %i
	br label %L.1
L.2:
	store %symb.SymbNode* null, %symb.SymbNode** %rv.0
	br label %return
return:
	%18 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %18
}
define internal %symb.SymbNode* @symb_Find([0 x i8]* %name$) nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%name = alloca [0 x i8]*
	store [0 x i8]* %name$, [0 x i8]** %name
	%s = alloca %symb.SymbNode*
	%0 = load [0 x i8]** %name
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = call %symb.SymbNode* @symb_FindTop([0 x i8]* %1)
	store %symb.SymbNode* %2, %symb.SymbNode** %s
	%3 = load %symb.SymbNode** %s
	%4 = icmp ne %symb.SymbNode* %3, null
	br i1 %4, label %L.1, label %L.2
L.1:
	%5 = load %symb.SymbNode** %s
	%6 = getelementptr %symb.SymbNode* %5, i32 0, i32 13
	%7 = load i8* %6
	%8 = icmp eq i8 %7, 6
	br label %L.2
L.2:
	%9 = phi i1 [ false, %L.0 ], [ %8, %L.1 ]
	br i1 %9, label %L.4, label %L.3
L.4:
	%10 = load %symb.SymbNode** %s
	%11 = call %symb.SymbNode* @symb_FindPackage(%symb.SymbNode* %10)
	store %symb.SymbNode* %11, %symb.SymbNode** %s
	br label %L.3
L.3:
	%12 = load %symb.SymbNode** %s
	store %symb.SymbNode* %12, %symb.SymbNode** %rv.0
	br label %return
return:
	%13 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %13
}
define internal %symb.SymbNode* @symb_FindKind([0 x i8]* %name$, i8 zeroext %kind$) nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%name = alloca [0 x i8]*
	%kind = alloca i8
	store [0 x i8]* %name$, [0 x i8]** %name
	store i8 %kind$, i8* %kind
	%s = alloca %symb.SymbNode*
	%0 = load [0 x i8]** %name
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = call %symb.SymbNode* @symb_Find([0 x i8]* %1)
	store %symb.SymbNode* %2, %symb.SymbNode** %s
	%3 = load %symb.SymbNode** %s
	%4 = icmp ne %symb.SymbNode* %3, null
	br i1 %4, label %L.2, label %L.3
L.2:
	%5 = load %symb.SymbNode** %s
	%6 = getelementptr %symb.SymbNode* %5, i32 0, i32 13
	%7 = load i8* %6
	%8 = load i8* %kind
	%9 = icmp ne i8 %7, %8
	br i1 %9, label %L.5, label %L.4
L.5:
	%10 = load i8* %kind
	%11 = zext i8 %10 to i32
	switch i32 %11, label %L.6 [
		i32 2, label %L.8
		i32 3, label %L.9
	]
L.8:
	call void @lex_Error(i8 26)
	br label %L.7
L.9:
	call void @lex_Error(i8 74)
	br label %L.7
L.6:
	br label %L.7
L.7:
	br label %L.4
L.4:
	br label %L.1
L.3:
	%12 = load [0 x i8]** %name
	%13 = bitcast [0 x i8]* %12 to [0 x i8]*
	call void @lex_ErrorI(i8 19, [0 x i8]* %13)
	br label %L.1
L.1:
	%14 = load %symb.SymbNode** %s
	store %symb.SymbNode* %14, %symb.SymbNode** %rv.0
	br label %return
return:
	%15 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %15
}
define internal zeroext i8 @symb_IsDefined([0 x i8]* %name$) nounwind {
L.0:
	%rv.0 = alloca i8
	%name = alloca [0 x i8]*
	store [0 x i8]* %name$, [0 x i8]** %name
	%s = alloca %symb.SymbNode*
	%tok = alloca i8
	%0 = load [0 x i8]** %name
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = call %symb.SymbNode* @symb_FindTop([0 x i8]* %1)
	store %symb.SymbNode* %2, %symb.SymbNode** %s
	br label %L.1
L.1:
	%3 = call i8 @lex_Next()
	store i8 %3, i8* %tok
	%4 = load i8* %tok
	%5 = icmp ne i8 %4, 2
	br i1 %5, label %L.2, label %L.3
L.3:
	%6 = call i8 @lex_Next()
	store i8 %6, i8* %tok
	%7 = load i8* %tok
	%8 = icmp ne i8 %7, 41
	br i1 %8, label %L.2, label %L.4
L.4:
	%9 = load %symb.SymbNode** %s
	%10 = icmp ne %symb.SymbNode* %9, null
	br i1 %10, label %L.6, label %L.5
L.6:
	%11 = load %symb.SymbNode** %s
	%12 = getelementptr %symb.SymbNode* %11, i32 0, i32 5
	%13 = load %symb.SymbNode** %12
	%14 = bitcast %symb.SymbNode* %13 to %symb.SymbNode*
	%15 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%16 = call %symb.SymbNode* @symb_FindLocal(%symb.SymbNode* %14, [0 x i8]* %15)
	store %symb.SymbNode* %16, %symb.SymbNode** %s
	br label %L.5
L.5:
	br label %L.1
L.2:
	%17 = load %symb.SymbNode** %s
	%18 = icmp ne %symb.SymbNode* %17, null
	%19 = zext i1 %18 to i8
	store i8 %19, i8* %rv.0
	br label %return
return:
	%20 = load i8* %rv.0
	ret i8 %20
}
define internal %symb.SymbNode* @symb_Save() nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%0 = load i8* @symb_level
	%1 = zext i8 %0 to i32
	%2 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %1
	%3 = getelementptr %symb.symblist* %2, i32 0, i32 0
	%4 = load %symb.SymbNode** %3
	store %symb.SymbNode* %4, %symb.SymbNode** %rv.0
	br label %return
return:
	%5 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %5
}
define internal %symb.SymbNode* @symb_Push(%symb.SymbNode* %init$, %symb.SymbNode* %ps$) nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%init = alloca %symb.SymbNode*
	%ps = alloca %symb.SymbNode*
	store %symb.SymbNode* %init$, %symb.SymbNode** %init
	store %symb.SymbNode* %ps$, %symb.SymbNode** %ps
	%0 = load i8* @symb_level
	%1 = icmp ult i8 %0, 31
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load i8* @symb_level
	%3 = add i8 %2, 1
	store i8 %3, i8* @symb_level
	%4 = load %symb.SymbNode** %init
	%5 = icmp eq %symb.SymbNode* %4, null
	br i1 %5, label %L.5, label %L.6
L.5:
	%6 = load i8* @symb_level
	%7 = zext i8 %6 to i32
	%8 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %7
	%9 = getelementptr %symb.symblist* %8, i32 0, i32 0
	store %symb.SymbNode* null, %symb.SymbNode** %9
	%10 = load i8* @symb_level
	%11 = zext i8 %10 to i32
	%12 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %11
	%13 = getelementptr %symb.symblist* %12, i32 0, i32 1
	store %symb.SymbNode* null, %symb.SymbNode** %13
	br label %L.4
L.6:
	%14 = load %symb.SymbNode** %init
	%15 = load i8* @symb_level
	%16 = zext i8 %15 to i32
	%17 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %16
	%18 = getelementptr %symb.symblist* %17, i32 0, i32 0
	store %symb.SymbNode* %14, %symb.SymbNode** %18
	br label %L.7
L.7:
	%19 = load %symb.SymbNode** %init
	%20 = getelementptr %symb.SymbNode* %19, i32 0, i32 0
	%21 = load %symb.SymbNode** %20
	%22 = icmp ne %symb.SymbNode* %21, null
	%23 = xor i1 %22, true
	br i1 %23, label %L.8, label %L.9
L.9:
	%24 = load %symb.SymbNode** %init
	%25 = getelementptr %symb.SymbNode* %24, i32 0, i32 0
	%26 = load %symb.SymbNode** %25
	%27 = bitcast %symb.SymbNode* %26 to %symb.SymbNode*
	store %symb.SymbNode* %27, %symb.SymbNode** %init
	br label %L.7
L.8:
	%28 = load %symb.SymbNode** %init
	%29 = load i8* @symb_level
	%30 = zext i8 %29 to i32
	%31 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %30
	%32 = getelementptr %symb.symblist* %31, i32 0, i32 1
	store %symb.SymbNode* %28, %symb.SymbNode** %32
	br label %L.4
L.4:
	%33 = load %symb.SymbNode** %ps
	%34 = load i8* @symb_level
	%35 = zext i8 %34 to i32
	%36 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %35
	%37 = getelementptr %symb.symblist* %36, i32 0, i32 2
	store %symb.SymbNode* %33, %symb.SymbNode** %37
	br label %L.1
L.3:
	br label %L.1
L.1:
	%38 = load %symb.SymbNode** %init
	store %symb.SymbNode* %38, %symb.SymbNode** %rv.0
	br label %return
return:
	%39 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %39
}
@S.338 = internal constant [4 x i8] c"In \00"
@S.339 = internal constant [10 x i8] c" unused: \00"
define internal void @symb_Pop() nounwind {
L.0:
	%0 = load i8* @symb_level
	%1 = icmp ugt i8 %0, 0
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = getelementptr %A.3* @feature, i32 0, i32 1
	%3 = load i8* %2
	%4 = icmp ne i8 %3, 0
	br i1 %4, label %L.4, label %L.5
L.4:
	%5 = load %symb.SymbNode** @symb_curproc
	%6 = icmp ne %symb.SymbNode* %5, null
	br label %L.5
L.5:
	%7 = phi i1 [ false, %L.2 ], [ %6, %L.4 ]
	br i1 %7, label %L.7, label %L.6
L.7:
	%s = alloca %symb.SymbNode*
	%8 = load i8* @symb_level
	%9 = zext i8 %8 to i32
	%10 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %9
	%11 = getelementptr %symb.symblist* %10, i32 0, i32 0
	%12 = load %symb.SymbNode** %11
	store %symb.SymbNode* %12, %symb.SymbNode** %s
	br label %L.8
L.8:
	%13 = load %symb.SymbNode** %s
	%14 = icmp ne %symb.SymbNode* %13, null
	%15 = xor i1 %14, true
	br i1 %15, label %L.9, label %L.10
L.10:
	%16 = load %symb.SymbNode** %s
	%17 = getelementptr %symb.SymbNode* %16, i32 0, i32 19
	%18 = load i8* %17
	%19 = icmp ne i8 %18, 0
	%20 = xor i1 %19, true
	br i1 %20, label %L.11, label %L.12
L.11:
	%21 = load %symb.SymbNode** %s
	%22 = getelementptr %symb.SymbNode* %21, i32 0, i32 14
	%23 = load i8* %22
	%24 = icmp ne i8 %23, 0
	br label %L.12
L.12:
	%25 = phi i1 [ false, %L.10 ], [ %24, %L.11 ]
	br i1 %25, label %L.14, label %L.13
L.14:
	%26 = getelementptr [4 x i8]* @S.338
	%27 = bitcast [4 x i8]* %26 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %27)
	%28 = load %symb.SymbNode** @symb_curpack
	%29 = icmp ne %symb.SymbNode* %28, null
	br i1 %29, label %L.16, label %L.15
L.16:
	%30 = load %symb.SymbNode** @symb_curpack
	%31 = getelementptr %symb.SymbNode* %30, i32 0, i32 22
	%32 = getelementptr [0 x i8]* %31
	%33 = bitcast [0 x i8]* %32 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %33)
	call void @sys_fildes_chr(i32 2, i8 46)
	br label %L.15
L.15:
	%34 = load %symb.SymbNode** @symb_curproc
	%35 = getelementptr %symb.SymbNode* %34, i32 0, i32 22
	%36 = getelementptr [0 x i8]* %35
	%37 = bitcast [0 x i8]* %36 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %37)
	%38 = getelementptr [10 x i8]* @S.339
	%39 = bitcast [10 x i8]* %38 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %39)
	%40 = load %symb.SymbNode** %s
	%41 = getelementptr %symb.SymbNode* %40, i32 0, i32 22
	%42 = getelementptr [0 x i8]* %41
	%43 = bitcast [0 x i8]* %42 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %43)
	call void @sys_fildes_nl(i32 2)
	br label %L.13
L.13:
	%44 = load %symb.SymbNode** %s
	%45 = getelementptr %symb.SymbNode* %44, i32 0, i32 0
	%46 = load %symb.SymbNode** %45
	%47 = bitcast %symb.SymbNode* %46 to %symb.SymbNode*
	store %symb.SymbNode* %47, %symb.SymbNode** %s
	br label %L.8
L.9:
	br label %L.6
L.6:
	%48 = load i8* @symb_level
	%49 = sub i8 %48, 1
	store i8 %49, i8* @symb_level
	br label %L.1
L.3:
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@ast_NumChildDefault = internal constant [92 x i8] [ i8 0, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 0, i8 0, i8 0, i8 8, i8 2, i8 0, i8 1, i8 2, i8 3, i8 1, i8 1, i8 4, i8 5, i8 5, i8 4, i8 4, i8 4, i8 4, i8 4, i8 1, i8 1, i8 2, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 3, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 1, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 3, i8 3, i8 3, i8 3, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 2, i8 3, i8 8, i8 1, i8 2, i8 3, i8 8, i8 4, i8 1, i8 3 ], align 1
@ast_Null = internal global %ast.AstNode* zeroinitializer, align 4
define internal %ast.AstNode* @ast_Alloc(i8 zeroext %op$, i16 zeroext %nc$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%nc = alloca i16
	store i8 %op$, i8* %op
	store i16 %nc$, i16* %nc
	%pa = alloca %ast.AstNode*
	%0 = load i16* %nc
	%1 = zext i16 %0 to i32
	%2 = mul i32 %1, 4
	%3 = add i32 32, %2
	%4 = call [0 x i8]* @sys_zalloc(i32 %3)
	%5 = bitcast [0 x i8]* %4 to %ast.AstNode*
	store %ast.AstNode* %5, %ast.AstNode** %pa
	%6 = load i8* %op
	%7 = load %ast.AstNode** %pa
	%8 = getelementptr %ast.AstNode* %7, i32 0, i32 0
	store i8 %6, i8* %8
	%9 = call i16 @lex_Lineno()
	%10 = load %ast.AstNode** %pa
	%11 = getelementptr %ast.AstNode* %10, i32 0, i32 5
	store i16 %9, i16* %11
	%12 = load %ast.AstNode** %pa
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 2
	store i16 0, i16* %13
	%14 = load i16* %nc
	%15 = load %ast.AstNode** %pa
	%16 = getelementptr %ast.AstNode* %15, i32 0, i32 3
	store i16 %14, i16* %16
	%17 = load %ast.AstNode** %pa
	store %ast.AstNode* %17, %ast.AstNode** %rv.0
	br label %return
return:
	%18 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %18
}
define internal %ast.AstNode* @ast_Dup(%ast.AstNode* %from$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%from = alloca %ast.AstNode*
	store %ast.AstNode* %from$, %ast.AstNode** %from
	%pa = alloca %ast.AstNode*
	%0 = load %ast.AstNode** %from
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 3
	%2 = load i16* %1
	%3 = zext i16 %2 to i32
	%4 = mul i32 %3, 4
	%5 = add i32 32, %4
	%6 = call [0 x i8]* @sys_zalloc(i32 %5)
	%7 = bitcast [0 x i8]* %6 to %ast.AstNode*
	store %ast.AstNode* %7, %ast.AstNode** %pa
	%8 = load %ast.AstNode** %from
	%9 = load %ast.AstNode* %8
	%10 = load %ast.AstNode** %pa
	store %ast.AstNode %9, %ast.AstNode* %10
	%11 = call i16 @lex_Lineno()
	%12 = load %ast.AstNode** %pa
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 5
	store i16 %11, i16* %13
	%14 = load %ast.AstNode** %pa
	store %ast.AstNode* %14, %ast.AstNode** %rv.0
	br label %return
return:
	%15 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %15
}
define internal %ast.AstNode* @ast_Expand(%ast.AstNode* %po$, i16 zeroext %newsize$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%po = alloca %ast.AstNode*
	%newsize = alloca i16
	store %ast.AstNode* %po$, %ast.AstNode** %po
	store i16 %newsize$, i16* %newsize
	%pn = alloca %ast.AstNode*
	%size = alloca i16
	%i = alloca i16
	%0 = load %ast.AstNode** %po
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 3
	%2 = load i16* %1
	store i16 %2, i16* %size
	br label %L.1
L.1:
	%3 = load i16* %size
	%4 = load i16* %newsize
	%5 = icmp ult i16 %3, %4
	%6 = xor i1 %5, true
	br i1 %6, label %L.2, label %L.3
L.3:
	%7 = load i16* %size
	%8 = icmp uge i16 %7, 16
	br i1 %8, label %L.5, label %L.6
L.5:
	%9 = load i16* %size
	%10 = add i16 %9, 16
	store i16 %10, i16* %size
	br label %L.4
L.6:
	%11 = load i16* %size
	%12 = mul i16 2, %11
	store i16 %12, i16* %size
	br label %L.4
L.4:
	br label %L.1
L.2:
	%13 = load %ast.AstNode** %po
	%14 = getelementptr %ast.AstNode* %13, i32 0, i32 0
	%15 = load i8* %14
	%16 = load i16* %size
	%17 = call %ast.AstNode* @ast_Alloc(i8 %15, i16 %16)
	store %ast.AstNode* %17, %ast.AstNode** %pn
	%18 = load %ast.AstNode** %po
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 0
	%20 = load i8* %19
	%21 = load %ast.AstNode** %pn
	%22 = getelementptr %ast.AstNode* %21, i32 0, i32 0
	store i8 %20, i8* %22
	%23 = load %ast.AstNode** %po
	%24 = getelementptr %ast.AstNode* %23, i32 0, i32 7
	%25 = load i32* %24
	%26 = load %ast.AstNode** %pn
	%27 = getelementptr %ast.AstNode* %26, i32 0, i32 7
	store i32 %25, i32* %27
	%28 = load %ast.AstNode** %po
	%29 = getelementptr %ast.AstNode* %28, i32 0, i32 4
	%30 = load i16* %29
	%31 = load %ast.AstNode** %pn
	%32 = getelementptr %ast.AstNode* %31, i32 0, i32 4
	store i16 %30, i16* %32
	%33 = load %ast.AstNode** %po
	%34 = getelementptr %ast.AstNode* %33, i32 0, i32 5
	%35 = load i16* %34
	%36 = load %ast.AstNode** %pn
	%37 = getelementptr %ast.AstNode* %36, i32 0, i32 5
	store i16 %35, i16* %37
	%38 = load %ast.AstNode** %po
	%39 = getelementptr %ast.AstNode* %38, i32 0, i32 2
	%40 = load i16* %39
	%41 = load %ast.AstNode** %pn
	%42 = getelementptr %ast.AstNode* %41, i32 0, i32 2
	store i16 %40, i16* %42
	%43 = load %ast.AstNode** %po
	%44 = getelementptr %ast.AstNode* %43, i32 0, i32 6
	%45 = load i16* %44
	%46 = load %ast.AstNode** %pn
	%47 = getelementptr %ast.AstNode* %46, i32 0, i32 6
	store i16 %45, i16* %47
	%48 = load %ast.AstNode** %po
	%49 = getelementptr %ast.AstNode* %48, i32 0, i32 10
	%50 = load i64* %49
	%51 = load %ast.AstNode** %pn
	%52 = getelementptr %ast.AstNode* %51, i32 0, i32 10
	store i64 %50, i64* %52
	%53 = load %ast.AstNode** %po
	%54 = getelementptr %ast.AstNode* %53, i32 0, i32 8
	%55 = load %type.TypeNode** %54
	%56 = load %ast.AstNode** %pn
	%57 = getelementptr %ast.AstNode* %56, i32 0, i32 8
	store %type.TypeNode* %55, %type.TypeNode** %57
	%58 = load %ast.AstNode** %po
	%59 = getelementptr %ast.AstNode* %58, i32 0, i32 9
	%60 = load %symb.SymbNode** %59
	%61 = load %ast.AstNode** %pn
	%62 = getelementptr %ast.AstNode* %61, i32 0, i32 9
	store %symb.SymbNode* %60, %symb.SymbNode** %62
	store i16 0, i16* %i
	br label %L.7
L.7:
	%63 = load i16* %i
	%64 = load %ast.AstNode** %po
	%65 = getelementptr %ast.AstNode* %64, i32 0, i32 3
	%66 = load i16* %65
	%67 = icmp ult i16 %63, %66
	%68 = xor i1 %67, true
	br i1 %68, label %L.8, label %L.9
L.9:
	%69 = load %ast.AstNode** %po
	%70 = getelementptr %ast.AstNode* %69, i32 0, i32 11
	%71 = load i16* %i
	%72 = zext i16 %71 to i32
	%73 = getelementptr [0 x %ast.AstNode*]* %70, i32 0, i32 %72
	%74 = load %ast.AstNode** %73
	%75 = load %ast.AstNode** %pn
	%76 = getelementptr %ast.AstNode* %75, i32 0, i32 11
	%77 = load i16* %i
	%78 = zext i16 %77 to i32
	%79 = getelementptr [0 x %ast.AstNode*]* %76, i32 0, i32 %78
	store %ast.AstNode* %74, %ast.AstNode** %79
	%80 = load i16* %i
	%81 = add i16 %80, 1
	store i16 %81, i16* %i
	br label %L.7
L.8:
	%82 = load i16* %size
	%83 = load %ast.AstNode** %pn
	%84 = getelementptr %ast.AstNode* %83, i32 0, i32 3
	store i16 %82, i16* %84
	%85 = load %ast.AstNode** %pn
	store %ast.AstNode* %85, %ast.AstNode** %rv.0
	br label %return
return:
	%86 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %86
}
define internal %ast.AstNode* @ast_New(i8 zeroext %op$, %type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%t = alloca %type.TypeNode*
	store i8 %op$, i8* %op
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%pa = alloca %ast.AstNode*
	%0 = load i8* %op
	%1 = load i8* %op
	%2 = zext i8 %1 to i32
	%3 = getelementptr [92 x i8]* @ast_NumChildDefault, i32 0, i32 %2
	%4 = load i8* %3
	%5 = zext i8 %4 to i16
	%6 = call %ast.AstNode* @ast_Alloc(i8 %0, i16 %5)
	store %ast.AstNode* %6, %ast.AstNode** %pa
	%7 = load %type.TypeNode** %t
	%8 = load %ast.AstNode** %pa
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 8
	store %type.TypeNode* %7, %type.TypeNode** %9
	%10 = load %type.TypeNode** %t
	%11 = icmp ne %type.TypeNode* %10, null
	br i1 %11, label %L.2, label %L.1
L.2:
	%12 = load %type.TypeNode** %t
	%13 = getelementptr %type.TypeNode* %12, i32 0, i32 10
	%14 = load i32* %13
	%15 = load %ast.AstNode** %pa
	%16 = getelementptr %ast.AstNode* %15, i32 0, i32 7
	store i32 %14, i32* %16
	br label %L.1
L.1:
	%17 = load %ast.AstNode** %pa
	store %ast.AstNode* %17, %ast.AstNode** %rv.0
	br label %return
return:
	%18 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %18
}
define internal %ast.AstNode* @ast_New1(i8 zeroext %op$, %type.TypeNode* %t$, %ast.AstNode* %pc0$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%t = alloca %type.TypeNode*
	%pc0 = alloca %ast.AstNode*
	store i8 %op$, i8* %op
	store %type.TypeNode* %t$, %type.TypeNode** %t
	store %ast.AstNode* %pc0$, %ast.AstNode** %pc0
	%pa = alloca %ast.AstNode*
	%n = alloca i16
	%0 = load i8* %op
	%1 = zext i8 %0 to i32
	%2 = getelementptr [92 x i8]* @ast_NumChildDefault, i32 0, i32 %1
	%3 = load i8* %2
	%4 = zext i8 %3 to i16
	store i16 %4, i16* %n
	%5 = load i16* %n
	%6 = icmp ult i16 %5, 1
	br i1 %6, label %L.2, label %L.1
L.2:
	store i16 1, i16* %n
	br label %L.1
L.1:
	%7 = load i8* %op
	%8 = load i16* %n
	%9 = call %ast.AstNode* @ast_Alloc(i8 %7, i16 %8)
	store %ast.AstNode* %9, %ast.AstNode** %pa
	%10 = load %ast.AstNode** %pc0
	%11 = bitcast %ast.AstNode* %10 to %ast.AstNode*
	%12 = load %ast.AstNode** %pa
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 11
	%14 = getelementptr [0 x %ast.AstNode*]* %13, i32 0, i32 0
	store %ast.AstNode* %11, %ast.AstNode** %14
	%15 = load %ast.AstNode** %pa
	%16 = getelementptr %ast.AstNode* %15, i32 0, i32 2
	store i16 1, i16* %16
	%17 = load %type.TypeNode** %t
	%18 = load %ast.AstNode** %pa
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 8
	store %type.TypeNode* %17, %type.TypeNode** %19
	%20 = load %ast.AstNode** %pc0
	%21 = icmp ne %ast.AstNode* %20, null
	br i1 %21, label %L.4, label %L.3
L.4:
	%22 = load %ast.AstNode** %pc0
	%23 = getelementptr %ast.AstNode* %22, i32 0, i32 7
	%24 = load i32* %23
	%25 = load %ast.AstNode** %pa
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 7
	store i32 %24, i32* %26
	br label %L.3
L.3:
	%27 = load %ast.AstNode** %pa
	store %ast.AstNode* %27, %ast.AstNode** %rv.0
	br label %return
return:
	%28 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %28
}
define internal %ast.AstNode* @ast_New2(i8 zeroext %op$, %type.TypeNode* %t$, %ast.AstNode* %pc0$, %ast.AstNode* %pc1$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%t = alloca %type.TypeNode*
	%pc0 = alloca %ast.AstNode*
	%pc1 = alloca %ast.AstNode*
	store i8 %op$, i8* %op
	store %type.TypeNode* %t$, %type.TypeNode** %t
	store %ast.AstNode* %pc0$, %ast.AstNode** %pc0
	store %ast.AstNode* %pc1$, %ast.AstNode** %pc1
	%pa = alloca %ast.AstNode*
	%n = alloca i16
	%0 = load i8* %op
	%1 = zext i8 %0 to i32
	%2 = getelementptr [92 x i8]* @ast_NumChildDefault, i32 0, i32 %1
	%3 = load i8* %2
	%4 = zext i8 %3 to i16
	store i16 %4, i16* %n
	%5 = load i16* %n
	%6 = icmp ult i16 %5, 2
	br i1 %6, label %L.2, label %L.1
L.2:
	store i16 2, i16* %n
	br label %L.1
L.1:
	%7 = load i8* %op
	%8 = load i16* %n
	%9 = call %ast.AstNode* @ast_Alloc(i8 %7, i16 %8)
	store %ast.AstNode* %9, %ast.AstNode** %pa
	%10 = load %ast.AstNode** %pc0
	%11 = bitcast %ast.AstNode* %10 to %ast.AstNode*
	%12 = load %ast.AstNode** %pa
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 11
	%14 = getelementptr [0 x %ast.AstNode*]* %13, i32 0, i32 0
	store %ast.AstNode* %11, %ast.AstNode** %14
	%15 = load %ast.AstNode** %pc1
	%16 = bitcast %ast.AstNode* %15 to %ast.AstNode*
	%17 = load %ast.AstNode** %pa
	%18 = getelementptr %ast.AstNode* %17, i32 0, i32 11
	%19 = getelementptr [0 x %ast.AstNode*]* %18, i32 0, i32 1
	store %ast.AstNode* %16, %ast.AstNode** %19
	%20 = load %ast.AstNode** %pa
	%21 = getelementptr %ast.AstNode* %20, i32 0, i32 2
	store i16 2, i16* %21
	%22 = load %type.TypeNode** %t
	%23 = load %ast.AstNode** %pa
	%24 = getelementptr %ast.AstNode* %23, i32 0, i32 8
	store %type.TypeNode* %22, %type.TypeNode** %24
	%25 = load %ast.AstNode** %pc0
	%26 = icmp ne %ast.AstNode* %25, null
	br i1 %26, label %L.4, label %L.3
L.4:
	%27 = load %ast.AstNode** %pc0
	%28 = getelementptr %ast.AstNode* %27, i32 0, i32 7
	%29 = load i32* %28
	%30 = load %ast.AstNode** %pa
	%31 = getelementptr %ast.AstNode* %30, i32 0, i32 7
	store i32 %29, i32* %31
	br label %L.3
L.3:
	%32 = load %ast.AstNode** %pa
	store %ast.AstNode* %32, %ast.AstNode** %rv.0
	br label %return
return:
	%33 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %33
}
define internal %ast.AstNode* @ast_New3(i8 zeroext %op$, %type.TypeNode* %t$, %ast.AstNode* %pc0$, %ast.AstNode* %pc1$, %ast.AstNode* %pc2$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%t = alloca %type.TypeNode*
	%pc0 = alloca %ast.AstNode*
	%pc1 = alloca %ast.AstNode*
	%pc2 = alloca %ast.AstNode*
	store i8 %op$, i8* %op
	store %type.TypeNode* %t$, %type.TypeNode** %t
	store %ast.AstNode* %pc0$, %ast.AstNode** %pc0
	store %ast.AstNode* %pc1$, %ast.AstNode** %pc1
	store %ast.AstNode* %pc2$, %ast.AstNode** %pc2
	%pa = alloca %ast.AstNode*
	%n = alloca i16
	%0 = load i8* %op
	%1 = zext i8 %0 to i32
	%2 = getelementptr [92 x i8]* @ast_NumChildDefault, i32 0, i32 %1
	%3 = load i8* %2
	%4 = zext i8 %3 to i16
	store i16 %4, i16* %n
	%5 = load i16* %n
	%6 = icmp ult i16 %5, 3
	br i1 %6, label %L.2, label %L.1
L.2:
	store i16 3, i16* %n
	br label %L.1
L.1:
	%7 = load i8* %op
	%8 = load i16* %n
	%9 = call %ast.AstNode* @ast_Alloc(i8 %7, i16 %8)
	store %ast.AstNode* %9, %ast.AstNode** %pa
	%10 = load %ast.AstNode** %pc0
	%11 = bitcast %ast.AstNode* %10 to %ast.AstNode*
	%12 = load %ast.AstNode** %pa
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 11
	%14 = getelementptr [0 x %ast.AstNode*]* %13, i32 0, i32 0
	store %ast.AstNode* %11, %ast.AstNode** %14
	%15 = load %ast.AstNode** %pc1
	%16 = bitcast %ast.AstNode* %15 to %ast.AstNode*
	%17 = load %ast.AstNode** %pa
	%18 = getelementptr %ast.AstNode* %17, i32 0, i32 11
	%19 = getelementptr [0 x %ast.AstNode*]* %18, i32 0, i32 1
	store %ast.AstNode* %16, %ast.AstNode** %19
	%20 = load %ast.AstNode** %pc2
	%21 = bitcast %ast.AstNode* %20 to %ast.AstNode*
	%22 = load %ast.AstNode** %pa
	%23 = getelementptr %ast.AstNode* %22, i32 0, i32 11
	%24 = getelementptr [0 x %ast.AstNode*]* %23, i32 0, i32 2
	store %ast.AstNode* %21, %ast.AstNode** %24
	%25 = load %ast.AstNode** %pa
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 2
	store i16 3, i16* %26
	%27 = load %type.TypeNode** %t
	%28 = load %ast.AstNode** %pa
	%29 = getelementptr %ast.AstNode* %28, i32 0, i32 8
	store %type.TypeNode* %27, %type.TypeNode** %29
	%30 = load %ast.AstNode** %pc0
	%31 = icmp ne %ast.AstNode* %30, null
	br i1 %31, label %L.4, label %L.3
L.4:
	%32 = load %ast.AstNode** %pc0
	%33 = getelementptr %ast.AstNode* %32, i32 0, i32 7
	%34 = load i32* %33
	%35 = load %ast.AstNode** %pa
	%36 = getelementptr %ast.AstNode* %35, i32 0, i32 7
	store i32 %34, i32* %36
	br label %L.3
L.3:
	%37 = load %ast.AstNode** %pa
	store %ast.AstNode* %37, %ast.AstNode** %rv.0
	br label %return
return:
	%38 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %38
}
define internal %ast.AstNode* @ast_Child(%ast.AstNode* %pp$, %ast.AstNode* %pc$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%pp = alloca %ast.AstNode*
	%pc = alloca %ast.AstNode*
	store %ast.AstNode* %pp$, %ast.AstNode** %pp
	store %ast.AstNode* %pc$, %ast.AstNode** %pc
	%n = alloca i16
	%0 = load %ast.AstNode** %pp
	%1 = icmp ne %ast.AstNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load %ast.AstNode** %pp
	%3 = getelementptr %ast.AstNode* %2, i32 0, i32 2
	%4 = load i16* %3
	%5 = add i16 %4, 1
	store i16 %5, i16* %n
	%6 = load i16* %n
	%7 = load %ast.AstNode** %pp
	%8 = getelementptr %ast.AstNode* %7, i32 0, i32 3
	%9 = load i16* %8
	%10 = icmp ugt i16 %6, %9
	br i1 %10, label %L.4, label %L.3
L.4:
	%11 = load %ast.AstNode** %pp
	%12 = load i16* %n
	%13 = call %ast.AstNode* @ast_Expand(%ast.AstNode* %11, i16 %12)
	store %ast.AstNode* %13, %ast.AstNode** %pp
	br label %L.3
L.3:
	%14 = load %ast.AstNode** %pc
	%15 = bitcast %ast.AstNode* %14 to %ast.AstNode*
	%16 = load %ast.AstNode** %pp
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 11
	%18 = load %ast.AstNode** %pp
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 2
	%20 = load i16* %19
	%21 = zext i16 %20 to i32
	%22 = getelementptr [0 x %ast.AstNode*]* %17, i32 0, i32 %21
	store %ast.AstNode* %15, %ast.AstNode** %22
	%23 = load i16* %n
	%24 = load %ast.AstNode** %pp
	%25 = getelementptr %ast.AstNode* %24, i32 0, i32 2
	store i16 %23, i16* %25
	br label %L.1
L.1:
	%26 = load %ast.AstNode** %pp
	store %ast.AstNode* %26, %ast.AstNode** %rv.0
	br label %return
return:
	%27 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %27
}
define internal %ast.AstNode* @ast_ChildIndexed(%ast.AstNode* %pp$, i16 zeroext %n$, %ast.AstNode* %pc$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%pp = alloca %ast.AstNode*
	%n = alloca i16
	%pc = alloca %ast.AstNode*
	store %ast.AstNode* %pp$, %ast.AstNode** %pp
	store i16 %n$, i16* %n
	store %ast.AstNode* %pc$, %ast.AstNode** %pc
	%0 = load i16* %n
	%1 = add i16 %0, 1
	store i16 %1, i16* %n
	%2 = load i16* %n
	%3 = load %ast.AstNode** %pp
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 3
	%5 = load i16* %4
	%6 = icmp ugt i16 %2, %5
	br i1 %6, label %L.2, label %L.1
L.2:
	%7 = load %ast.AstNode** %pp
	%8 = load i16* %n
	%9 = call %ast.AstNode* @ast_Expand(%ast.AstNode* %7, i16 %8)
	store %ast.AstNode* %9, %ast.AstNode** %pp
	br label %L.1
L.1:
	%10 = load %ast.AstNode** %pc
	%11 = bitcast %ast.AstNode* %10 to %ast.AstNode*
	%12 = load %ast.AstNode** %pp
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 11
	%14 = load i16* %n
	%15 = sub i16 %14, 1
	%16 = zext i16 %15 to i32
	%17 = getelementptr [0 x %ast.AstNode*]* %13, i32 0, i32 %16
	store %ast.AstNode* %11, %ast.AstNode** %17
	%18 = load i16* %n
	%19 = load %ast.AstNode** %pp
	%20 = getelementptr %ast.AstNode* %19, i32 0, i32 2
	%21 = load i16* %20
	%22 = icmp ugt i16 %18, %21
	br i1 %22, label %L.4, label %L.3
L.4:
	%23 = load i16* %n
	%24 = load %ast.AstNode** %pp
	%25 = getelementptr %ast.AstNode* %24, i32 0, i32 2
	store i16 %23, i16* %25
	br label %L.3
L.3:
	%26 = load %ast.AstNode** %pp
	store %ast.AstNode* %26, %ast.AstNode** %rv.0
	br label %return
return:
	%27 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %27
}
define internal %ast.AstNode* @ast_Const(%type.TypeNode* %t$, i64 %value$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	%value = alloca i64
	store %type.TypeNode* %t$, %type.TypeNode** %t
	store i64 %value$, i64* %value
	%pa = alloca %ast.AstNode*
	%0 = load %type.TypeNode** %t
	%1 = call %ast.AstNode* @ast_New(i8 7, %type.TypeNode* %0)
	store %ast.AstNode* %1, %ast.AstNode** %pa
	%2 = load i64* %value
	%3 = load %ast.AstNode** %pa
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 10
	store i64 %2, i64* %4
	%5 = load %type.TypeNode** %t
	%6 = icmp ne %type.TypeNode* %5, null
	br i1 %6, label %L.2, label %L.1
L.2:
	%7 = load %type.TypeNode** %t
	%8 = getelementptr %type.TypeNode* %7, i32 0, i32 10
	%9 = load i32* %8
	%10 = load %ast.AstNode** %pa
	%11 = getelementptr %ast.AstNode* %10, i32 0, i32 7
	store i32 %9, i32* %11
	br label %L.1
L.1:
	%12 = load %ast.AstNode** %pa
	store %ast.AstNode* %12, %ast.AstNode** %rv.0
	br label %return
return:
	%13 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %13
}
define internal void @ast_CheckConstTruncate(%ast.AstNode* %node$, i32 %size$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	%size = alloca i32
	store %ast.AstNode* %node$, %ast.AstNode** %node
	store i32 %size$, i32* %size
	%0 = load i32* %size
	%1 = icmp uge i32 %0, 64
	br i1 %1, label %L.2, label %L.1
L.2:
	br label %return
L.1:
	%2 = load %ast.AstNode** %node
	%3 = getelementptr %ast.AstNode* %2, i32 0, i32 8
	%4 = load %type.TypeNode** %3
	%5 = getelementptr %type.TypeNode* %4, i32 0, i32 14
	%6 = load i8* %5
	%7 = icmp eq i8 %6, 3
	br i1 %7, label %L.4, label %L.5
L.4:
	%8 = load %ast.AstNode** %node
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 10
	%10 = load i64* %9
	%11 = icmp slt i64 %10, 0
	br i1 %11, label %L.7, label %L.8
L.7:
	%12 = load %ast.AstNode** %node
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 10
	%14 = load i64* %13
	%15 = load i32* %size
	%16 = zext i32 %15 to i64
	%17 = add i64 %16, 1
	%18 = ashr i64 %14, %17
	%19 = icmp ne i64 %18, -1
	br i1 %19, label %L.10, label %L.9
L.10:
	call void @lex_Error(i8 2)
	br label %L.9
L.9:
	br label %L.6
L.8:
	%20 = load %ast.AstNode** %node
	%21 = getelementptr %ast.AstNode* %20, i32 0, i32 10
	%22 = load i64* %21
	%23 = load i32* %size
	%24 = zext i32 %23 to i64
	%25 = add i64 %24, 1
	%26 = lshr i64 %22, %25
	%27 = icmp ne i64 %26, 0
	br i1 %27, label %L.12, label %L.11
L.12:
	call void @lex_Error(i8 2)
	br label %L.11
L.11:
	br label %L.6
L.6:
	br label %L.3
L.5:
	%28 = load %ast.AstNode** %node
	%29 = getelementptr %ast.AstNode* %28, i32 0, i32 10
	%30 = load i64* %29
	%31 = load i32* %size
	%32 = zext i32 %31 to i64
	%33 = lshr i64 %30, %32
	%34 = icmp ne i64 %33, 0
	br i1 %34, label %L.14, label %L.13
L.14:
	call void @lex_Error(i8 2)
	br label %L.13
L.13:
	br label %L.3
L.3:
	br label %return
return:
	ret void
}
define internal %ast.AstNode* @ast_Extend(%ast.AstNode* %tree$, i32 %size$, i8 zeroext %iscast$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%size = alloca i32
	%iscast = alloca i8
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	store i32 %size$, i32* %size
	store i8 %iscast$, i8* %iscast
	%0 = load %ast.AstNode** %tree
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 7
	%2 = load i32* %1
	%3 = load i32* %size
	%4 = icmp ult i32 %2, %3
	br i1 %4, label %L.2, label %L.3
L.2:
	%5 = load %ast.AstNode** %tree
	%6 = getelementptr %ast.AstNode* %5, i32 0, i32 0
	%7 = load i8* %6
	%8 = icmp ne i8 %7, 7
	br i1 %8, label %L.4, label %L.5
L.4:
	%9 = load %ast.AstNode** %tree
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 0
	%11 = load i8* %10
	%12 = icmp ne i8 %11, 8
	br label %L.5
L.5:
	%13 = phi i1 [ false, %L.2 ], [ %12, %L.4 ]
	br i1 %13, label %L.7, label %L.6
L.7:
	%14 = load %ast.AstNode** %tree
	%15 = getelementptr %ast.AstNode* %14, i32 0, i32 8
	%16 = load %type.TypeNode** %15
	%17 = getelementptr %type.TypeNode* %16, i32 0, i32 14
	%18 = load i8* %17
	%19 = zext i8 %18 to i32
	switch i32 %19, label %L.8 [
		i32 4, label %L.10
		i32 3, label %L.11
	]
L.10:
	%20 = load %ast.AstNode** %tree
	%21 = getelementptr %ast.AstNode* %20, i32 0, i32 8
	%22 = load %type.TypeNode** %21
	%23 = load %ast.AstNode** %tree
	%24 = call %ast.AstNode* @ast_New1(i8 37, %type.TypeNode* %22, %ast.AstNode* %23)
	store %ast.AstNode* %24, %ast.AstNode** %tree
	br label %L.9
L.11:
	%25 = load %ast.AstNode** %tree
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 8
	%27 = load %type.TypeNode** %26
	%28 = load %ast.AstNode** %tree
	%29 = call %ast.AstNode* @ast_New1(i8 30, %type.TypeNode* %27, %ast.AstNode* %28)
	store %ast.AstNode* %29, %ast.AstNode** %tree
	br label %L.9
L.8:
	%30 = load %ast.AstNode** %tree
	%31 = getelementptr %ast.AstNode* %30, i32 0, i32 8
	%32 = load %type.TypeNode** %31
	%33 = load %ast.AstNode** %tree
	%34 = call %ast.AstNode* @ast_New1(i8 29, %type.TypeNode* %32, %ast.AstNode* %33)
	store %ast.AstNode* %34, %ast.AstNode** %tree
	br label %L.9
L.9:
	br label %L.6
L.6:
	%35 = load i32* %size
	%36 = load %ast.AstNode** %tree
	%37 = getelementptr %ast.AstNode* %36, i32 0, i32 7
	store i32 %35, i32* %37
	br label %L.1
L.3:
	%38 = load %ast.AstNode** %tree
	%39 = getelementptr %ast.AstNode* %38, i32 0, i32 7
	%40 = load i32* %39
	%41 = load i32* %size
	%42 = icmp ugt i32 %40, %41
	br i1 %42, label %L.13, label %L.12
L.13:
	%43 = load %ast.AstNode** %tree
	%44 = getelementptr %ast.AstNode* %43, i32 0, i32 0
	%45 = load i8* %44
	%46 = icmp ne i8 %45, 7
	br i1 %46, label %L.14, label %L.15
L.14:
	%47 = load %ast.AstNode** %tree
	%48 = getelementptr %ast.AstNode* %47, i32 0, i32 0
	%49 = load i8* %48
	%50 = icmp ne i8 %49, 8
	br label %L.15
L.15:
	%51 = phi i1 [ false, %L.13 ], [ %50, %L.14 ]
	br i1 %51, label %L.17, label %L.18
L.17:
	%52 = load %ast.AstNode** %tree
	%53 = getelementptr %ast.AstNode* %52, i32 0, i32 8
	%54 = load %type.TypeNode** %53
	%55 = getelementptr %type.TypeNode* %54, i32 0, i32 14
	%56 = load i8* %55
	%57 = icmp eq i8 %56, 4
	br i1 %57, label %L.20, label %L.21
L.20:
	%58 = load %ast.AstNode** %tree
	%59 = getelementptr %ast.AstNode* %58, i32 0, i32 8
	%60 = load %type.TypeNode** %59
	%61 = load %ast.AstNode** %tree
	%62 = call %ast.AstNode* @ast_New1(i8 38, %type.TypeNode* %60, %ast.AstNode* %61)
	store %ast.AstNode* %62, %ast.AstNode** %tree
	br label %L.19
L.21:
	%63 = load %ast.AstNode** %tree
	%64 = getelementptr %ast.AstNode* %63, i32 0, i32 8
	%65 = load %type.TypeNode** %64
	%66 = load %ast.AstNode** %tree
	%67 = call %ast.AstNode* @ast_New1(i8 31, %type.TypeNode* %65, %ast.AstNode* %66)
	store %ast.AstNode* %67, %ast.AstNode** %tree
	br label %L.19
L.19:
	%68 = getelementptr %A.3* @feature, i32 0, i32 4
	%69 = load i8* %68
	%70 = icmp ne i8 %69, 0
	br i1 %70, label %L.22, label %L.23
L.22:
	%71 = load i8* %iscast
	%72 = icmp ne i8 %71, 0
	%73 = xor i1 %72, true
	br label %L.23
L.23:
	%74 = phi i1 [ false, %L.19 ], [ %73, %L.22 ]
	br i1 %74, label %L.25, label %L.24
L.25:
	call void @lex_Error(i8 2)
	br label %L.24
L.24:
	br label %L.16
L.18:
	%75 = load %ast.AstNode** %tree
	%76 = load i32* %size
	call void @ast_CheckConstTruncate(%ast.AstNode* %75, i32 %76)
	br label %L.16
L.16:
	%77 = load i32* %size
	%78 = load %ast.AstNode** %tree
	%79 = getelementptr %ast.AstNode* %78, i32 0, i32 7
	store i32 %77, i32* %79
	br label %L.12
L.12:
	br label %L.1
L.1:
	%80 = load %ast.AstNode** %tree
	store %ast.AstNode* %80, %ast.AstNode** %rv.0
	br label %return
return:
	%81 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %81
}
define internal %ast.AstNode* @ast_ExtendT(%ast.AstNode* %tree$, %type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%0 = load %ast.AstNode** %tree
	%1 = load %type.TypeNode** %t
	%2 = getelementptr %type.TypeNode* %1, i32 0, i32 10
	%3 = load i32* %2
	%4 = call %ast.AstNode* @ast_Extend(%ast.AstNode* %0, i32 %3, i8 0)
	store %ast.AstNode* %4, %ast.AstNode** %tree
	%5 = load %type.TypeNode** %t
	%6 = load %ast.AstNode** %tree
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 8
	store %type.TypeNode* %5, %type.TypeNode** %7
	%8 = load %ast.AstNode** %tree
	store %ast.AstNode* %8, %ast.AstNode** %rv.0
	br label %return
return:
	%9 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %9
}
define internal %ast.AstNode* @ast_ExtendCast(%ast.AstNode* %tree$, %type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%0 = load %ast.AstNode** %tree
	%1 = load %type.TypeNode** %t
	%2 = getelementptr %type.TypeNode* %1, i32 0, i32 10
	%3 = load i32* %2
	%4 = call %ast.AstNode* @ast_Extend(%ast.AstNode* %0, i32 %3, i8 1)
	store %ast.AstNode* %4, %ast.AstNode** %tree
	%5 = load %type.TypeNode** %t
	%6 = load %ast.AstNode** %tree
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 8
	store %type.TypeNode* %5, %type.TypeNode** %7
	%8 = load %ast.AstNode** %tree
	store %ast.AstNode* %8, %ast.AstNode** %rv.0
	br label %return
return:
	%9 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %9
}
define internal %ast.AstNode* @ast_Cast(%ast.AstNode* %tree$, %type.TypeNode* %to$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%to = alloca %type.TypeNode*
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	store %type.TypeNode* %to$, %type.TypeNode** %to
	%0 = load %ast.AstNode** %tree
	%1 = icmp eq %ast.AstNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load %ast.AstNode** %tree
	store %ast.AstNode* %2, %ast.AstNode** %rv.0
	br label %return
L.1:
	%3 = load %type.TypeNode** %to
	%4 = getelementptr %type.TypeNode* %3, i32 0, i32 14
	%5 = load i8* %4
	%6 = zext i8 %5 to i32
	switch i32 %6, label %L.3 [
		i32 1, label %L.5
		i32 2, label %L.6
		i32 3, label %L.7
		i32 4, label %L.8
		i32 5, label %L.9
		i32 7, label %L.10
		i32 6, label %L.10
	]
L.5:
	%7 = load %ast.AstNode** %tree
	%8 = getelementptr %ast.AstNode* %7, i32 0, i32 8
	%9 = load %type.TypeNode** %8
	%10 = getelementptr %type.TypeNode* %9, i32 0, i32 14
	%11 = load i8* %10
	%12 = icmp eq i8 %11, 2
	br i1 %12, label %L.12, label %L.13
L.12:
	%13 = load %ast.AstNode** %tree
	%14 = load %type.TypeNode** %to
	%15 = call %ast.AstNode* @ast_ExtendCast(%ast.AstNode* %13, %type.TypeNode* %14)
	store %ast.AstNode* %15, %ast.AstNode** %tree
	br label %L.11
L.13:
	call void @lex_Error(i8 50)
	br label %L.11
L.11:
	br label %L.4
L.6:
	%16 = load %ast.AstNode** %tree
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 8
	%18 = load %type.TypeNode** %17
	%19 = getelementptr %type.TypeNode* %18, i32 0, i32 14
	%20 = load i8* %19
	%21 = zext i8 %20 to i32
	switch i32 %21, label %L.14 [
		i32 1, label %L.16
		i32 2, label %L.16
		i32 3, label %L.16
		i32 5, label %L.17
		i32 7, label %L.18
		i32 6, label %L.18
		i32 4, label %L.19
	]
L.16:
	%22 = load %ast.AstNode** %tree
	%23 = load %type.TypeNode** %to
	%24 = call %ast.AstNode* @ast_ExtendCast(%ast.AstNode* %22, %type.TypeNode* %23)
	store %ast.AstNode* %24, %ast.AstNode** %tree
	br label %L.15
L.17:
	%25 = load %type.TypeNode** %to
	%26 = load %ast.AstNode** %tree
	%27 = call %ast.AstNode* @ast_New1(i8 17, %type.TypeNode* %25, %ast.AstNode* %26)
	store %ast.AstNode* %27, %ast.AstNode** %tree
	%28 = load %type.TypeNode** %to
	%29 = getelementptr %type.TypeNode* %28, i32 0, i32 9
	%30 = load i32* %29
	%31 = load %ast.AstNode** %tree
	%32 = getelementptr %ast.AstNode* %31, i32 0, i32 7
	store i32 %30, i32* %32
	br label %L.15
L.18:
	%33 = load %ast.AstNode** %tree
	%34 = getelementptr %ast.AstNode* %33, i32 0, i32 8
	%35 = load %type.TypeNode** %34
	%36 = getelementptr %type.TypeNode* %35, i32 0, i32 21
	%37 = load i8* %36
	%38 = icmp ne i8 %37, 0
	br i1 %38, label %L.20, label %L.21
L.20:
	%39 = load %ast.AstNode** %tree
	%40 = getelementptr %ast.AstNode* %39, i32 0, i32 7
	%41 = load i32* %40
	%42 = load %type.TypeNode** %to
	%43 = getelementptr %type.TypeNode* %42, i32 0, i32 9
	%44 = load i32* %43
	%45 = icmp eq i32 %41, %44
	br label %L.21
L.21:
	%46 = phi i1 [ false, %L.18 ], [ %45, %L.20 ]
	br i1 %46, label %L.23, label %L.24
L.23:
	%47 = load %type.TypeNode** %to
	%48 = load %ast.AstNode** %tree
	%49 = getelementptr %ast.AstNode* %48, i32 0, i32 8
	store %type.TypeNode* %47, %type.TypeNode** %49
	br label %L.22
L.24:
	call void @lex_Error(i8 50)
	br label %L.22
L.22:
	br label %L.15
L.19:
	%50 = load %type.TypeNode** %to
	%51 = load %ast.AstNode** %tree
	%52 = call %ast.AstNode* @ast_New1(i8 17, %type.TypeNode* %50, %ast.AstNode* %51)
	store %ast.AstNode* %52, %ast.AstNode** %tree
	%53 = load %type.TypeNode** %to
	%54 = getelementptr %type.TypeNode* %53, i32 0, i32 10
	%55 = load i32* %54
	%56 = load %ast.AstNode** %tree
	%57 = getelementptr %ast.AstNode* %56, i32 0, i32 7
	store i32 %55, i32* %57
	br label %L.15
L.14:
	call void @lex_Error(i8 50)
	br label %L.15
L.15:
	br label %L.4
L.7:
	%58 = load %ast.AstNode** %tree
	%59 = getelementptr %ast.AstNode* %58, i32 0, i32 8
	%60 = load %type.TypeNode** %59
	%61 = getelementptr %type.TypeNode* %60, i32 0, i32 14
	%62 = load i8* %61
	%63 = zext i8 %62 to i32
	switch i32 %63, label %L.25 [
		i32 2, label %L.27
		i32 3, label %L.27
	]
L.27:
	%64 = load %ast.AstNode** %tree
	%65 = load %type.TypeNode** %to
	%66 = call %ast.AstNode* @ast_ExtendCast(%ast.AstNode* %64, %type.TypeNode* %65)
	store %ast.AstNode* %66, %ast.AstNode** %tree
	br label %L.26
L.25:
	call void @lex_Error(i8 50)
	br label %L.26
L.26:
	br label %L.4
L.8:
	%67 = load %ast.AstNode** %tree
	%68 = getelementptr %ast.AstNode* %67, i32 0, i32 8
	%69 = load %type.TypeNode** %68
	%70 = getelementptr %type.TypeNode* %69, i32 0, i32 14
	%71 = load i8* %70
	%72 = icmp eq i8 %71, 2
	br i1 %72, label %L.29, label %L.30
L.29:
	%73 = load %type.TypeNode** %to
	%74 = load %ast.AstNode** %tree
	%75 = call %ast.AstNode* @ast_New1(i8 17, %type.TypeNode* %73, %ast.AstNode* %74)
	store %ast.AstNode* %75, %ast.AstNode** %tree
	%76 = load %type.TypeNode** %to
	%77 = getelementptr %type.TypeNode* %76, i32 0, i32 10
	%78 = load i32* %77
	%79 = load %ast.AstNode** %tree
	%80 = getelementptr %ast.AstNode* %79, i32 0, i32 7
	store i32 %78, i32* %80
	br label %L.28
L.30:
	call void @lex_Error(i8 50)
	br label %L.28
L.28:
	br label %L.4
L.9:
	%81 = load %ast.AstNode** %tree
	%82 = getelementptr %ast.AstNode* %81, i32 0, i32 8
	%83 = load %type.TypeNode** %82
	%84 = getelementptr %type.TypeNode* %83, i32 0, i32 14
	%85 = load i8* %84
	%86 = zext i8 %85 to i32
	switch i32 %86, label %L.31 [
		i32 5, label %L.33
		i32 2, label %L.34
		i32 6, label %L.35
	]
L.33:
	%87 = load %type.TypeNode** %to
	%88 = load %ast.AstNode** %tree
	%89 = call %ast.AstNode* @ast_New1(i8 17, %type.TypeNode* %87, %ast.AstNode* %88)
	store %ast.AstNode* %89, %ast.AstNode** %tree
	%90 = load %target.ModelT** @target_Target
	%91 = getelementptr %target.ModelT* %90, i32 0, i32 6
	%92 = getelementptr %target.SizeAlign* %91, i32 0, i32 0
	%93 = load i8* %92
	%94 = zext i8 %93 to i32
	%95 = load %ast.AstNode** %tree
	%96 = getelementptr %ast.AstNode* %95, i32 0, i32 7
	store i32 %94, i32* %96
	br label %L.32
L.34:
	%97 = load %ast.AstNode** %tree
	%98 = getelementptr %ast.AstNode* %97, i32 0, i32 7
	%99 = load i32* %98
	%100 = load %target.ModelT** @target_Target
	%101 = getelementptr %target.ModelT* %100, i32 0, i32 6
	%102 = getelementptr %target.SizeAlign* %101, i32 0, i32 0
	%103 = load i8* %102
	%104 = zext i8 %103 to i32
	%105 = icmp ne i32 %99, %104
	br i1 %105, label %L.37, label %L.36
L.37:
	call void @lex_Error(i8 5)
	br label %L.36
L.36:
	%106 = load %type.TypeNode** %to
	%107 = load %ast.AstNode** %tree
	%108 = call %ast.AstNode* @ast_New1(i8 17, %type.TypeNode* %106, %ast.AstNode* %107)
	store %ast.AstNode* %108, %ast.AstNode** %tree
	%109 = load %type.TypeNode** %to
	%110 = getelementptr %type.TypeNode* %109, i32 0, i32 9
	%111 = load i32* %110
	%112 = load %ast.AstNode** %tree
	%113 = getelementptr %ast.AstNode* %112, i32 0, i32 7
	store i32 %111, i32* %113
	br label %L.32
L.35:
	%114 = load %ast.AstNode** %tree
	%115 = getelementptr %ast.AstNode* %114, i32 0, i32 0
	%116 = load i8* %115
	%117 = icmp eq i8 %116, 27
	br i1 %117, label %L.39, label %L.38
L.39:
	%118 = load %ast.AstNode** %tree
	%119 = getelementptr %ast.AstNode* %118, i32 0, i32 11
	%120 = getelementptr [0 x %ast.AstNode*]* %119, i32 0, i32 0
	%121 = load %ast.AstNode** %120
	%122 = bitcast %ast.AstNode* %121 to %ast.AstNode*
	store %ast.AstNode* %122, %ast.AstNode** %tree
	br label %L.38
L.38:
	%123 = load %ast.AstNode** %tree
	%124 = getelementptr %ast.AstNode* %123, i32 0, i32 0
	%125 = load i8* %124
	%126 = icmp eq i8 %125, 15
	br i1 %126, label %L.40, label %L.41
L.40:
	%127 = load %ast.AstNode** %tree
	%128 = getelementptr %ast.AstNode* %127, i32 0, i32 8
	%129 = load %type.TypeNode** %128
	%130 = getelementptr %type.TypeNode* %129, i32 0, i32 0
	%131 = load %type.TypeNode** %130
	%132 = getelementptr %type.TypeNode* %131, i32 0, i32 0
	%133 = load %type.TypeNode** %132
	%134 = load %type.TypeNode** @type_bytetype
	%135 = icmp eq %type.TypeNode* %133, %134
	br label %L.41
L.41:
	%136 = phi i1 [ false, %L.38 ], [ %135, %L.40 ]
	br i1 %136, label %L.43, label %L.44
L.43:
	%137 = load %type.TypeNode** %to
	%138 = load %ast.AstNode** %tree
	%139 = call %ast.AstNode* @ast_New1(i8 17, %type.TypeNode* %137, %ast.AstNode* %138)
	store %ast.AstNode* %139, %ast.AstNode** %tree
	%140 = load %type.TypeNode** %to
	%141 = getelementptr %type.TypeNode* %140, i32 0, i32 9
	%142 = load i32* %141
	%143 = load %ast.AstNode** %tree
	%144 = getelementptr %ast.AstNode* %143, i32 0, i32 7
	store i32 %142, i32* %144
	br label %L.42
L.44:
	call void @lex_Error(i8 50)
	br label %L.42
L.42:
	br label %L.32
L.31:
	call void @lex_Error(i8 50)
	br label %L.32
L.32:
	br label %L.4
L.10:
	%145 = load %type.TypeNode** %to
	%146 = getelementptr %type.TypeNode* %145, i32 0, i32 21
	%147 = load i8* %146
	%148 = icmp ne i8 %147, 0
	br i1 %148, label %L.47, label %L.48
L.47:
	%149 = load %ast.AstNode** %tree
	%150 = getelementptr %ast.AstNode* %149, i32 0, i32 8
	%151 = load %type.TypeNode** %150
	%152 = getelementptr %type.TypeNode* %151, i32 0, i32 14
	%153 = load i8* %152
	%154 = icmp eq i8 %153, 2
	br label %L.48
L.48:
	%155 = phi i1 [ false, %L.10 ], [ %154, %L.47 ]
	br i1 %155, label %L.45, label %L.46
L.45:
	%156 = load %ast.AstNode** %tree
	%157 = getelementptr %ast.AstNode* %156, i32 0, i32 7
	%158 = load i32* %157
	%159 = load %type.TypeNode** %to
	%160 = getelementptr %type.TypeNode* %159, i32 0, i32 9
	%161 = load i32* %160
	%162 = icmp eq i32 %158, %161
	br label %L.46
L.46:
	%163 = phi i1 [ false, %L.48 ], [ %162, %L.45 ]
	br i1 %163, label %L.50, label %L.51
L.50:
	%164 = load %type.TypeNode** %to
	%165 = load %ast.AstNode** %tree
	%166 = getelementptr %ast.AstNode* %165, i32 0, i32 8
	store %type.TypeNode* %164, %type.TypeNode** %166
	br label %L.49
L.51:
	call void @lex_Error(i8 50)
	br label %L.49
L.49:
	br label %L.4
L.3:
	br label %L.4
L.4:
	%167 = load %ast.AstNode** %tree
	store %ast.AstNode* %167, %ast.AstNode** %rv.0
	br label %return
return:
	%168 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %168
}
define internal %ast.AstNode* @ast_ForceBoolean(%ast.AstNode* %tree$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	%0 = load %ast.AstNode** %tree
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	%3 = icmp ne %type.TypeNode* %2, null
	br i1 %3, label %L.1, label %L.2
L.1:
	%4 = load %ast.AstNode** %tree
	%5 = getelementptr %ast.AstNode* %4, i32 0, i32 8
	%6 = load %type.TypeNode** %5
	%7 = load %type.TypeNode** @type_booltype
	%8 = call i8 @type_Compat(%type.TypeNode* %6, %type.TypeNode* %7)
	%9 = icmp ne i8 %8, 0
	%10 = xor i1 %9, true
	br label %L.2
L.2:
	%11 = phi i1 [ false, %L.0 ], [ %10, %L.1 ]
	br i1 %11, label %L.4, label %L.3
L.4:
	call void @lex_Error(i8 48)
	br label %L.3
L.3:
	%12 = load %ast.AstNode** %tree
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 7
	%14 = load i32* %13
	%15 = icmp ugt i32 %14, 1
	br i1 %15, label %L.6, label %L.5
L.6:
	%16 = load %ast.AstNode** %tree
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 0
	%18 = load i8* %17
	%19 = icmp ne i8 %18, 7
	br i1 %19, label %L.8, label %L.7
L.8:
	%20 = load %type.TypeNode** @type_booltype
	%21 = load %ast.AstNode** %tree
	%22 = load %ast.AstNode** %tree
	%23 = getelementptr %ast.AstNode* %22, i32 0, i32 8
	%24 = load %type.TypeNode** %23
	%25 = call %ast.AstNode* @ast_Const(%type.TypeNode* %24, i64 0)
	%26 = call %ast.AstNode* @ast_New2(i8 55, %type.TypeNode* %20, %ast.AstNode* %21, %ast.AstNode* %25)
	store %ast.AstNode* %26, %ast.AstNode** %tree
	br label %L.7
L.7:
	%27 = load %ast.AstNode** %tree
	%28 = getelementptr %ast.AstNode* %27, i32 0, i32 7
	store i32 1, i32* %28
	br label %L.5
L.5:
	%29 = load %ast.AstNode** %tree
	store %ast.AstNode* %29, %ast.AstNode** %rv.0
	br label %return
return:
	%30 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %30
}
define internal i32 @ast_popcnt(i64 %x$) nounwind {
L.0:
	%rv.0 = alloca i32
	%x = alloca i64
	store i64 %x$, i64* %x
	%n = alloca i32
	store i32 0, i32* %n
	br label %L.1
L.1:
	%0 = load i64* %x
	%1 = icmp ne i64 %0, 0
	%2 = xor i1 %1, true
	br i1 %2, label %L.2, label %L.3
L.3:
	%3 = load i32* %n
	%4 = add i32 %3, 1
	store i32 %4, i32* %n
	%5 = load i64* %x
	%6 = load i64* %x
	%7 = sub i64 %6, 1
	%8 = and i64 %5, %7
	store i64 %8, i64* %x
	br label %L.1
L.2:
	%9 = load i32* %n
	store i32 %9, i32* %rv.0
	br label %return
return:
	%10 = load i32* %rv.0
	ret i32 %10
}
@S.341 = internal constant [26 x i8] c"Unhandled unary operation\00"
define internal %ast.AstNode* @ast_OpUnary(i8 zeroext %op$, %ast.AstNode* %rhs$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%rhs = alloca %ast.AstNode*
	store i8 %op$, i8* %op
	store %ast.AstNode* %rhs$, %ast.AstNode** %rhs
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load %ast.AstNode** %rhs
	%1 = icmp ne %ast.AstNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load %ast.AstNode** %rhs
	%3 = getelementptr %ast.AstNode* %2, i32 0, i32 0
	%4 = load i8* %3
	%5 = icmp eq i8 %4, 7
	br i1 %5, label %L.4, label %L.5
L.4:
	%6 = load i8* %op
	%7 = zext i8 %6 to i32
	switch i32 %7, label %L.6 [
		i32 33, label %L.8
		i32 34, label %L.9
		i32 77, label %L.10
		i32 35, label %L.11
		i32 43, label %L.12
		i32 44, label %L.12
		i32 45, label %L.13
		i32 46, label %L.13
		i32 47, label %L.14
	]
L.8:
	%8 = load %ast.AstNode** %rhs
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 10
	%10 = load i64* %9
	%11 = sub i64 0, %10
	%12 = load %ast.AstNode** %rhs
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 10
	store i64 %11, i64* %13
	br label %L.7
L.9:
	%14 = load %ast.AstNode** %rhs
	%15 = getelementptr %ast.AstNode* %14, i32 0, i32 10
	%16 = load i64* %15
	%17 = xor i64 %16, -1
	%18 = load %ast.AstNode** %rhs
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 10
	store i64 %17, i64* %19
	br label %L.7
L.10:
	%20 = load %ast.AstNode** %rhs
	%21 = getelementptr %ast.AstNode* %20, i32 0, i32 10
	%22 = load i64* %21
	%23 = xor i64 %22, 1
	%24 = load %ast.AstNode** %rhs
	%25 = getelementptr %ast.AstNode* %24, i32 0, i32 10
	store i64 %23, i64* %25
	br label %L.7
L.11:
	%26 = load %ast.AstNode** %rhs
	%27 = getelementptr %ast.AstNode* %26, i32 0, i32 8
	%28 = load %type.TypeNode** %27
	%29 = getelementptr %type.TypeNode* %28, i32 0, i32 14
	%30 = load i8* %29
	%31 = icmp eq i8 %30, 3
	br i1 %31, label %L.15, label %L.16
L.15:
	%32 = load %ast.AstNode** %rhs
	%33 = getelementptr %ast.AstNode* %32, i32 0, i32 10
	%34 = load i64* %33
	%35 = icmp slt i64 %34, 0
	br label %L.16
L.16:
	%36 = phi i1 [ false, %L.11 ], [ %35, %L.15 ]
	br i1 %36, label %L.18, label %L.17
L.18:
	%37 = load %ast.AstNode** %rhs
	%38 = getelementptr %ast.AstNode* %37, i32 0, i32 10
	%39 = load i64* %38
	%40 = sub i64 0, %39
	%41 = load %ast.AstNode** %rhs
	%42 = getelementptr %ast.AstNode* %41, i32 0, i32 10
	store i64 %40, i64* %42
	br label %L.17
L.17:
	br label %L.7
L.12:
	%43 = load %ast.AstNode** %rhs
	%44 = getelementptr %ast.AstNode* %43, i32 0, i32 10
	%45 = load i64* %44
	%46 = icmp eq i64 %45, 0
	br i1 %46, label %L.20, label %L.21
L.20:
	%47 = load %ast.AstNode** %rhs
	%48 = getelementptr %ast.AstNode* %47, i32 0, i32 7
	%49 = load i32* %48
	%50 = zext i32 %49 to i64
	%51 = load %ast.AstNode** %rhs
	%52 = getelementptr %ast.AstNode* %51, i32 0, i32 10
	store i64 %50, i64* %52
	br label %L.19
L.21:
	%53 = load %ast.AstNode** %rhs
	%54 = getelementptr %ast.AstNode* %53, i32 0, i32 10
	%55 = load i64* %54
	%56 = call i64 @llvm.ctlz.i64(i64 %55, i1 true)
	%57 = load %target.ModelT** @target_Target
	%58 = getelementptr %target.ModelT* %57, i32 0, i32 2
	%59 = load i8* %58
	%60 = zext i8 %59 to i64
	%61 = mul i64 8, %60
	%62 = load %ast.AstNode** %rhs
	%63 = getelementptr %ast.AstNode* %62, i32 0, i32 7
	%64 = load i32* %63
	%65 = zext i32 %64 to i64
	%66 = sub i64 %61, %65
	%67 = sub i64 %56, %66
	%68 = load %ast.AstNode** %rhs
	%69 = getelementptr %ast.AstNode* %68, i32 0, i32 10
	store i64 %67, i64* %69
	br label %L.19
L.19:
	br label %L.7
L.13:
	%70 = load %ast.AstNode** %rhs
	%71 = getelementptr %ast.AstNode* %70, i32 0, i32 10
	%72 = load i64* %71
	%73 = icmp eq i64 %72, 0
	br i1 %73, label %L.23, label %L.24
L.23:
	%74 = load %ast.AstNode** %rhs
	%75 = getelementptr %ast.AstNode* %74, i32 0, i32 10
	store i64 0, i64* %75
	br label %L.22
L.24:
	%76 = load %ast.AstNode** %rhs
	%77 = getelementptr %ast.AstNode* %76, i32 0, i32 10
	%78 = load i64* %77
	%79 = call i64 @llvm.cttz.i64(i64 %78, i1 true)
	%80 = load %ast.AstNode** %rhs
	%81 = getelementptr %ast.AstNode* %80, i32 0, i32 10
	store i64 %79, i64* %81
	br label %L.22
L.22:
	br label %L.7
L.14:
	%82 = load %ast.AstNode** %rhs
	%83 = getelementptr %ast.AstNode* %82, i32 0, i32 10
	%84 = load i64* %83
	%85 = call i32 @ast_popcnt(i64 %84)
	%86 = zext i32 %85 to i64
	%87 = load %ast.AstNode** %rhs
	%88 = getelementptr %ast.AstNode* %87, i32 0, i32 10
	store i64 %86, i64* %88
	br label %L.7
L.6:
	%89 = getelementptr [26 x i8]* @S.341
	%90 = bitcast [26 x i8]* %89 to [0 x i8]*
	call void @lex_ErrorS(i8 86, [0 x i8]* %90)
	br label %L.7
L.7:
	%91 = load %ast.AstNode** %rhs
	store %ast.AstNode* %91, %ast.AstNode** %tree
	br label %L.3
L.5:
	%92 = load i8* %op
	%93 = load %ast.AstNode** %rhs
	%94 = getelementptr %ast.AstNode* %93, i32 0, i32 8
	%95 = load %type.TypeNode** %94
	%96 = load %ast.AstNode** %rhs
	%97 = call %ast.AstNode* @ast_New1(i8 %92, %type.TypeNode* %95, %ast.AstNode* %96)
	store %ast.AstNode* %97, %ast.AstNode** %tree
	br label %L.3
L.3:
	br label %L.1
L.1:
	%98 = load %ast.AstNode** %tree
	store %ast.AstNode* %98, %ast.AstNode** %rv.0
	br label %return
return:
	%99 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %99
}
define internal %ast.AstNode* @ast_OpBool(i8 zeroext %op$, %ast.AstNode* %lhs$, %ast.AstNode* %rhs$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%lhs = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	store i8 %op$, i8* %op
	store %ast.AstNode* %lhs$, %ast.AstNode** %lhs
	store %ast.AstNode* %rhs$, %ast.AstNode** %rhs
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load %ast.AstNode** %lhs
	%1 = icmp ne %ast.AstNode* %0, null
	br i1 %1, label %L.1, label %L.2
L.1:
	%2 = load %ast.AstNode** %rhs
	%3 = icmp ne %ast.AstNode* %2, null
	br label %L.2
L.2:
	%4 = phi i1 [ false, %L.0 ], [ %3, %L.1 ]
	br i1 %4, label %L.4, label %L.3
L.4:
	%5 = load %ast.AstNode** %lhs
	%6 = call %ast.AstNode* @ast_ForceBoolean(%ast.AstNode* %5)
	store %ast.AstNode* %6, %ast.AstNode** %lhs
	%7 = load %ast.AstNode** %rhs
	%8 = call %ast.AstNode* @ast_ForceBoolean(%ast.AstNode* %7)
	store %ast.AstNode* %8, %ast.AstNode** %rhs
	%9 = load %ast.AstNode** %lhs
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 0
	%11 = load i8* %10
	%12 = icmp eq i8 %11, 7
	br i1 %12, label %L.5, label %L.6
L.5:
	%13 = load %ast.AstNode** %rhs
	%14 = getelementptr %ast.AstNode* %13, i32 0, i32 0
	%15 = load i8* %14
	%16 = icmp eq i8 %15, 7
	br label %L.6
L.6:
	%17 = phi i1 [ false, %L.4 ], [ %16, %L.5 ]
	br i1 %17, label %L.8, label %L.9
L.8:
	%18 = load i8* %op
	%19 = zext i8 %18 to i32
	switch i32 %19, label %L.10 [
		i32 76, label %L.12
		i32 75, label %L.13
	]
L.12:
	%20 = load %ast.AstNode** %lhs
	%21 = getelementptr %ast.AstNode* %20, i32 0, i32 10
	%22 = load i64* %21
	%23 = load %ast.AstNode** %rhs
	%24 = getelementptr %ast.AstNode* %23, i32 0, i32 10
	%25 = load i64* %24
	%26 = or i64 %22, %25
	%27 = load %ast.AstNode** %lhs
	%28 = getelementptr %ast.AstNode* %27, i32 0, i32 10
	store i64 %26, i64* %28
	br label %L.11
L.13:
	%29 = load %ast.AstNode** %lhs
	%30 = getelementptr %ast.AstNode* %29, i32 0, i32 10
	%31 = load i64* %30
	%32 = load %ast.AstNode** %rhs
	%33 = getelementptr %ast.AstNode* %32, i32 0, i32 10
	%34 = load i64* %33
	%35 = and i64 %31, %34
	%36 = load %ast.AstNode** %lhs
	%37 = getelementptr %ast.AstNode* %36, i32 0, i32 10
	store i64 %35, i64* %37
	br label %L.11
L.10:
	br label %L.11
L.11:
	%38 = load %ast.AstNode** %lhs
	store %ast.AstNode* %38, %ast.AstNode** %tree
	br label %L.7
L.9:
	%39 = load i8* %op
	%40 = load %type.TypeNode** @type_booltype
	%41 = load %ast.AstNode** %lhs
	%42 = load %ast.AstNode** %rhs
	%43 = call %ast.AstNode* @ast_New2(i8 %39, %type.TypeNode* %40, %ast.AstNode* %41, %ast.AstNode* %42)
	store %ast.AstNode* %43, %ast.AstNode** %tree
	br label %L.7
L.7:
	br label %L.3
L.3:
	%44 = load %ast.AstNode** %tree
	store %ast.AstNode* %44, %ast.AstNode** %rv.0
	br label %return
return:
	%45 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %45
}
define internal %ast.AstNode* @ast_OpBinary(i8 zeroext %op$, %ast.AstNode* %lhs$, %ast.AstNode* %rhs$, %type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%lhs = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store i8 %op$, i8* %op
	store %ast.AstNode* %lhs$, %ast.AstNode** %lhs
	store %ast.AstNode* %rhs$, %ast.AstNode** %rhs
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%sl = alloca i32
	%sr = alloca i32
	%0 = load %ast.AstNode** %lhs
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 7
	%2 = load i32* %1
	store i32 %2, i32* %sl
	%3 = load %ast.AstNode** %rhs
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 7
	%5 = load i32* %4
	store i32 %5, i32* %sr
	%6 = load %type.TypeNode** %t
	%7 = icmp ne %type.TypeNode* %6, null
	br i1 %7, label %L.1, label %L.2
L.1:
	%8 = load %type.TypeNode** %t
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 10
	%10 = load i32* %9
	%11 = load i32* %sl
	%12 = icmp ugt i32 %10, %11
	br label %L.2
L.2:
	%13 = phi i1 [ false, %L.0 ], [ %12, %L.1 ]
	br i1 %13, label %L.4, label %L.3
L.4:
	%14 = load %ast.AstNode** %lhs
	%15 = load %type.TypeNode** %t
	%16 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %14, %type.TypeNode* %15)
	store %ast.AstNode* %16, %ast.AstNode** %lhs
	%17 = load %type.TypeNode** %t
	%18 = getelementptr %type.TypeNode* %17, i32 0, i32 10
	%19 = load i32* %18
	store i32 %19, i32* %sl
	br label %L.3
L.3:
	%20 = load i32* %sl
	%21 = load i32* %sr
	%22 = icmp ugt i32 %20, %21
	br i1 %22, label %L.6, label %L.7
L.6:
	%23 = load %ast.AstNode** %rhs
	%24 = load i32* %sl
	%25 = call %ast.AstNode* @ast_Extend(%ast.AstNode* %23, i32 %24, i8 0)
	store %ast.AstNode* %25, %ast.AstNode** %rhs
	br label %L.5
L.7:
	%26 = load i32* %sr
	%27 = load i32* %sl
	%28 = icmp ugt i32 %26, %27
	br i1 %28, label %L.9, label %L.8
L.9:
	%29 = load %ast.AstNode** %lhs
	%30 = load i32* %sr
	%31 = call %ast.AstNode* @ast_Extend(%ast.AstNode* %29, i32 %30, i8 0)
	store %ast.AstNode* %31, %ast.AstNode** %lhs
	br label %L.8
L.8:
	br label %L.5
L.5:
	%32 = load i8* %op
	%33 = load %ast.AstNode** %lhs
	%34 = getelementptr %ast.AstNode* %33, i32 0, i32 8
	%35 = load %type.TypeNode** %34
	%36 = load %ast.AstNode** %lhs
	%37 = load %ast.AstNode** %rhs
	%38 = call %ast.AstNode* @ast_New2(i8 %32, %type.TypeNode* %35, %ast.AstNode* %36, %ast.AstNode* %37)
	store %ast.AstNode* %38, %ast.AstNode** %rv.0
	br label %return
return:
	%39 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %39
}
define internal %ast.AstNode* @ast_OpAdd(i8 zeroext %op$, %ast.AstNode* %lhs$, %ast.AstNode* %rhs$, %type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%lhs = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store i8 %op$, i8* %op
	store %ast.AstNode* %lhs$, %ast.AstNode** %lhs
	store %ast.AstNode* %rhs$, %ast.AstNode** %rhs
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load %ast.AstNode** %lhs
	%1 = icmp ne %ast.AstNode* %0, null
	br i1 %1, label %L.1, label %L.2
L.1:
	%2 = load %ast.AstNode** %rhs
	%3 = icmp ne %ast.AstNode* %2, null
	br label %L.2
L.2:
	%4 = phi i1 [ false, %L.0 ], [ %3, %L.1 ]
	br i1 %4, label %L.4, label %L.3
L.4:
	%5 = load %ast.AstNode** %lhs
	%6 = getelementptr %ast.AstNode* %5, i32 0, i32 0
	%7 = load i8* %6
	%8 = icmp eq i8 %7, 7
	br i1 %8, label %L.5, label %L.6
L.5:
	%9 = load %ast.AstNode** %rhs
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 0
	%11 = load i8* %10
	%12 = icmp eq i8 %11, 7
	br label %L.6
L.6:
	%13 = phi i1 [ false, %L.4 ], [ %12, %L.5 ]
	br i1 %13, label %L.8, label %L.9
L.8:
	%14 = load i8* %op
	%15 = zext i8 %14 to i32
	switch i32 %15, label %L.10 [
		i32 49, label %L.12
		i32 50, label %L.13
	]
L.12:
	%16 = load %ast.AstNode** %lhs
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 10
	%18 = load i64* %17
	%19 = load %ast.AstNode** %rhs
	%20 = getelementptr %ast.AstNode* %19, i32 0, i32 10
	%21 = load i64* %20
	%22 = add i64 %18, %21
	store i64 %22, i64* %17
	br label %L.11
L.13:
	%23 = load %ast.AstNode** %lhs
	%24 = getelementptr %ast.AstNode* %23, i32 0, i32 10
	%25 = load i64* %24
	%26 = load %ast.AstNode** %rhs
	%27 = getelementptr %ast.AstNode* %26, i32 0, i32 10
	%28 = load i64* %27
	%29 = sub i64 %25, %28
	store i64 %29, i64* %24
	br label %L.11
L.10:
	br label %L.11
L.11:
	%30 = load %ast.AstNode** %lhs
	store %ast.AstNode* %30, %ast.AstNode** %tree
	br label %L.7
L.9:
	%31 = load i8* %op
	%32 = load %ast.AstNode** %lhs
	%33 = load %ast.AstNode** %rhs
	%34 = load %type.TypeNode** %t
	%35 = call %ast.AstNode* @ast_OpBinary(i8 %31, %ast.AstNode* %32, %ast.AstNode* %33, %type.TypeNode* %34)
	store %ast.AstNode* %35, %ast.AstNode** %tree
	br label %L.7
L.7:
	br label %L.3
L.3:
	%36 = load %ast.AstNode** %tree
	store %ast.AstNode* %36, %ast.AstNode** %rv.0
	br label %return
return:
	%37 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %37
}
define internal %ast.AstNode* @ast_OpMul(i8 zeroext %op$, %ast.AstNode* %lhs$, %ast.AstNode* %rhs$, %type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%lhs = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store i8 %op$, i8* %op
	store %ast.AstNode* %lhs$, %ast.AstNode** %lhs
	store %ast.AstNode* %rhs$, %ast.AstNode** %rhs
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load %ast.AstNode** %lhs
	%1 = icmp ne %ast.AstNode* %0, null
	br i1 %1, label %L.1, label %L.2
L.1:
	%2 = load %ast.AstNode** %rhs
	%3 = icmp ne %ast.AstNode* %2, null
	br label %L.2
L.2:
	%4 = phi i1 [ false, %L.0 ], [ %3, %L.1 ]
	br i1 %4, label %L.4, label %L.3
L.4:
	%5 = load %ast.AstNode** %lhs
	%6 = getelementptr %ast.AstNode* %5, i32 0, i32 0
	%7 = load i8* %6
	%8 = icmp eq i8 %7, 7
	br i1 %8, label %L.5, label %L.6
L.5:
	%9 = load %ast.AstNode** %rhs
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 0
	%11 = load i8* %10
	%12 = icmp eq i8 %11, 7
	br label %L.6
L.6:
	%13 = phi i1 [ false, %L.4 ], [ %12, %L.5 ]
	br i1 %13, label %L.8, label %L.9
L.8:
	%14 = load i8* %op
	%15 = zext i8 %14 to i32
	switch i32 %15, label %L.10 [
		i32 51, label %L.12
		i32 68, label %L.13
		i32 70, label %L.13
	]
L.12:
	%16 = load %ast.AstNode** %lhs
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 10
	%18 = load i64* %17
	%19 = load %ast.AstNode** %rhs
	%20 = getelementptr %ast.AstNode* %19, i32 0, i32 10
	%21 = load i64* %20
	%22 = mul i64 %18, %21
	%23 = load %ast.AstNode** %lhs
	%24 = getelementptr %ast.AstNode* %23, i32 0, i32 10
	store i64 %22, i64* %24
	br label %L.11
L.13:
	%25 = load %ast.AstNode** %lhs
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 10
	%27 = load i64* %26
	%28 = load %ast.AstNode** %rhs
	%29 = getelementptr %ast.AstNode* %28, i32 0, i32 10
	%30 = load i64* %29
	%31 = shl i64 %27, %30
	%32 = load %ast.AstNode** %lhs
	%33 = getelementptr %ast.AstNode* %32, i32 0, i32 10
	store i64 %31, i64* %33
	br label %L.11
L.10:
	br label %L.11
L.11:
	%34 = load %ast.AstNode** %lhs
	store %ast.AstNode* %34, %ast.AstNode** %tree
	br label %L.7
L.9:
	%35 = load i8* %op
	%36 = load %ast.AstNode** %lhs
	%37 = load %ast.AstNode** %rhs
	%38 = load %type.TypeNode** %t
	%39 = call %ast.AstNode* @ast_OpBinary(i8 %35, %ast.AstNode* %36, %ast.AstNode* %37, %type.TypeNode* %38)
	store %ast.AstNode* %39, %ast.AstNode** %tree
	br label %L.7
L.7:
	br label %L.3
L.3:
	%40 = load %ast.AstNode** %tree
	store %ast.AstNode* %40, %ast.AstNode** %rv.0
	br label %return
return:
	%41 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %41
}
define internal %ast.AstNode* @ast_OpDiv(i8 zeroext %op$, %ast.AstNode* %lhs$, %ast.AstNode* %rhs$, %type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%lhs = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store i8 %op$, i8* %op
	store %ast.AstNode* %lhs$, %ast.AstNode** %lhs
	store %ast.AstNode* %rhs$, %ast.AstNode** %rhs
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load %ast.AstNode** %lhs
	%1 = icmp ne %ast.AstNode* %0, null
	br i1 %1, label %L.1, label %L.2
L.1:
	%2 = load %ast.AstNode** %rhs
	%3 = icmp ne %ast.AstNode* %2, null
	br label %L.2
L.2:
	%4 = phi i1 [ false, %L.0 ], [ %3, %L.1 ]
	br i1 %4, label %L.4, label %L.3
L.4:
	%5 = load %ast.AstNode** %lhs
	%6 = getelementptr %ast.AstNode* %5, i32 0, i32 0
	%7 = load i8* %6
	%8 = icmp eq i8 %7, 7
	br i1 %8, label %L.5, label %L.6
L.5:
	%9 = load %ast.AstNode** %rhs
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 0
	%11 = load i8* %10
	%12 = icmp eq i8 %11, 7
	br label %L.6
L.6:
	%13 = phi i1 [ false, %L.4 ], [ %12, %L.5 ]
	br i1 %13, label %L.8, label %L.9
L.8:
	%14 = load i8* %op
	%15 = zext i8 %14 to i32
	switch i32 %15, label %L.10 [
		i32 52, label %L.12
		i32 53, label %L.13
		i32 69, label %L.14
		i32 71, label %L.15
	]
L.12:
	%16 = load %ast.AstNode** %lhs
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 10
	%18 = load i64* %17
	%19 = load %ast.AstNode** %rhs
	%20 = getelementptr %ast.AstNode* %19, i32 0, i32 10
	%21 = load i64* %20
	%22 = udiv i64 %18, %21
	%23 = load %ast.AstNode** %lhs
	%24 = getelementptr %ast.AstNode* %23, i32 0, i32 10
	store i64 %22, i64* %24
	br label %L.11
L.13:
	%25 = load %ast.AstNode** %lhs
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 10
	%27 = load i64* %26
	%28 = load %ast.AstNode** %rhs
	%29 = getelementptr %ast.AstNode* %28, i32 0, i32 10
	%30 = load i64* %29
	%31 = urem i64 %27, %30
	%32 = load %ast.AstNode** %lhs
	%33 = getelementptr %ast.AstNode* %32, i32 0, i32 10
	store i64 %31, i64* %33
	br label %L.11
L.14:
	%34 = load %ast.AstNode** %lhs
	%35 = getelementptr %ast.AstNode* %34, i32 0, i32 10
	%36 = load i64* %35
	%37 = load %ast.AstNode** %rhs
	%38 = getelementptr %ast.AstNode* %37, i32 0, i32 10
	%39 = load i64* %38
	%40 = lshr i64 %36, %39
	%41 = load %ast.AstNode** %lhs
	%42 = getelementptr %ast.AstNode* %41, i32 0, i32 10
	store i64 %40, i64* %42
	br label %L.11
L.15:
	%43 = load %ast.AstNode** %lhs
	%44 = getelementptr %ast.AstNode* %43, i32 0, i32 10
	%45 = load i64* %44
	%46 = load %ast.AstNode** %rhs
	%47 = getelementptr %ast.AstNode* %46, i32 0, i32 10
	%48 = load i64* %47
	%49 = shl i64 %45, %48
	%50 = load %ast.AstNode** %lhs
	%51 = getelementptr %ast.AstNode* %50, i32 0, i32 10
	store i64 %49, i64* %51
	br label %L.11
L.10:
	br label %L.11
L.11:
	%52 = load %ast.AstNode** %lhs
	store %ast.AstNode* %52, %ast.AstNode** %tree
	br label %L.7
L.9:
	%53 = load i8* %op
	%54 = load %ast.AstNode** %lhs
	%55 = load %ast.AstNode** %rhs
	%56 = load %type.TypeNode** %t
	%57 = call %ast.AstNode* @ast_OpBinary(i8 %53, %ast.AstNode* %54, %ast.AstNode* %55, %type.TypeNode* %56)
	store %ast.AstNode* %57, %ast.AstNode** %tree
	br label %L.7
L.7:
	br label %L.3
L.3:
	%58 = load %ast.AstNode** %tree
	store %ast.AstNode* %58, %ast.AstNode** %rv.0
	br label %return
return:
	%59 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %59
}
define internal %ast.AstNode* @ast_OpMinMax(i8 zeroext %op$, %ast.AstNode* %lhs$, %ast.AstNode* %rhs$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%lhs = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	store i8 %op$, i8* %op
	store %ast.AstNode* %lhs$, %ast.AstNode** %lhs
	store %ast.AstNode* %rhs$, %ast.AstNode** %rhs
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load %ast.AstNode** %lhs
	%1 = icmp ne %ast.AstNode* %0, null
	br i1 %1, label %L.1, label %L.2
L.1:
	%2 = load %ast.AstNode** %rhs
	%3 = icmp ne %ast.AstNode* %2, null
	br label %L.2
L.2:
	%4 = phi i1 [ false, %L.0 ], [ %3, %L.1 ]
	br i1 %4, label %L.4, label %L.3
L.4:
	%5 = load %ast.AstNode** %lhs
	%6 = getelementptr %ast.AstNode* %5, i32 0, i32 0
	%7 = load i8* %6
	%8 = icmp eq i8 %7, 7
	br i1 %8, label %L.5, label %L.6
L.5:
	%9 = load %ast.AstNode** %rhs
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 0
	%11 = load i8* %10
	%12 = icmp eq i8 %11, 7
	br label %L.6
L.6:
	%13 = phi i1 [ false, %L.4 ], [ %12, %L.5 ]
	br i1 %13, label %L.8, label %L.9
L.8:
	%14 = load i8* %op
	%15 = zext i8 %14 to i32
	switch i32 %15, label %L.10 [
		i32 64, label %L.12
		i32 65, label %L.13
		i32 66, label %L.14
		i32 67, label %L.15
	]
L.12:
	%16 = load %ast.AstNode** %rhs
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 10
	%18 = load i64* %17
	%19 = load %ast.AstNode** %lhs
	%20 = getelementptr %ast.AstNode* %19, i32 0, i32 10
	%21 = load i64* %20
	%22 = icmp ult i64 %18, %21
	br i1 %22, label %L.17, label %L.16
L.17:
	%23 = load %ast.AstNode** %rhs
	%24 = getelementptr %ast.AstNode* %23, i32 0, i32 10
	%25 = load i64* %24
	%26 = load %ast.AstNode** %lhs
	%27 = getelementptr %ast.AstNode* %26, i32 0, i32 10
	store i64 %25, i64* %27
	br label %L.16
L.16:
	br label %L.11
L.13:
	%28 = load %ast.AstNode** %rhs
	%29 = getelementptr %ast.AstNode* %28, i32 0, i32 10
	%30 = load i64* %29
	%31 = load %ast.AstNode** %lhs
	%32 = getelementptr %ast.AstNode* %31, i32 0, i32 10
	%33 = load i64* %32
	%34 = icmp ugt i64 %30, %33
	br i1 %34, label %L.19, label %L.18
L.19:
	%35 = load %ast.AstNode** %rhs
	%36 = getelementptr %ast.AstNode* %35, i32 0, i32 10
	%37 = load i64* %36
	%38 = load %ast.AstNode** %lhs
	%39 = getelementptr %ast.AstNode* %38, i32 0, i32 10
	store i64 %37, i64* %39
	br label %L.18
L.18:
	br label %L.11
L.14:
	%40 = load %ast.AstNode** %rhs
	%41 = getelementptr %ast.AstNode* %40, i32 0, i32 10
	%42 = load i64* %41
	%43 = load %ast.AstNode** %lhs
	%44 = getelementptr %ast.AstNode* %43, i32 0, i32 10
	%45 = load i64* %44
	%46 = icmp slt i64 %42, %45
	br i1 %46, label %L.21, label %L.20
L.21:
	%47 = load %ast.AstNode** %rhs
	%48 = getelementptr %ast.AstNode* %47, i32 0, i32 10
	%49 = load i64* %48
	%50 = load %ast.AstNode** %lhs
	%51 = getelementptr %ast.AstNode* %50, i32 0, i32 10
	store i64 %49, i64* %51
	br label %L.20
L.20:
	br label %L.11
L.15:
	%52 = load %ast.AstNode** %rhs
	%53 = getelementptr %ast.AstNode* %52, i32 0, i32 10
	%54 = load i64* %53
	%55 = load %ast.AstNode** %lhs
	%56 = getelementptr %ast.AstNode* %55, i32 0, i32 10
	%57 = load i64* %56
	%58 = icmp sgt i64 %54, %57
	br i1 %58, label %L.23, label %L.22
L.23:
	%59 = load %ast.AstNode** %rhs
	%60 = getelementptr %ast.AstNode* %59, i32 0, i32 10
	%61 = load i64* %60
	%62 = load %ast.AstNode** %lhs
	%63 = getelementptr %ast.AstNode* %62, i32 0, i32 10
	store i64 %61, i64* %63
	br label %L.22
L.22:
	br label %L.11
L.10:
	br label %L.11
L.11:
	%64 = load %ast.AstNode** %lhs
	store %ast.AstNode* %64, %ast.AstNode** %tree
	br label %L.7
L.9:
	%65 = load i8* %op
	%66 = load %ast.AstNode** %lhs
	%67 = load %ast.AstNode** %rhs
	%68 = call %ast.AstNode* @ast_OpBinary(i8 %65, %ast.AstNode* %66, %ast.AstNode* %67, %type.TypeNode* null)
	store %ast.AstNode* %68, %ast.AstNode** %tree
	br label %L.7
L.7:
	br label %L.3
L.3:
	%69 = load %ast.AstNode** %tree
	store %ast.AstNode* %69, %ast.AstNode** %rv.0
	br label %return
return:
	%70 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %70
}
define internal %ast.AstNode* @ast_OpLogic(i8 zeroext %op$, %ast.AstNode* %lhs$, %ast.AstNode* %rhs$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%lhs = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	store i8 %op$, i8* %op
	store %ast.AstNode* %lhs$, %ast.AstNode** %lhs
	store %ast.AstNode* %rhs$, %ast.AstNode** %rhs
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load %ast.AstNode** %lhs
	%1 = icmp ne %ast.AstNode* %0, null
	br i1 %1, label %L.1, label %L.2
L.1:
	%2 = load %ast.AstNode** %rhs
	%3 = icmp ne %ast.AstNode* %2, null
	br label %L.2
L.2:
	%4 = phi i1 [ false, %L.0 ], [ %3, %L.1 ]
	br i1 %4, label %L.4, label %L.3
L.4:
	%5 = load %ast.AstNode** %lhs
	%6 = getelementptr %ast.AstNode* %5, i32 0, i32 0
	%7 = load i8* %6
	%8 = icmp eq i8 %7, 7
	br i1 %8, label %L.5, label %L.6
L.5:
	%9 = load %ast.AstNode** %rhs
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 0
	%11 = load i8* %10
	%12 = icmp eq i8 %11, 7
	br label %L.6
L.6:
	%13 = phi i1 [ false, %L.4 ], [ %12, %L.5 ]
	br i1 %13, label %L.8, label %L.9
L.8:
	%14 = load i8* %op
	%15 = zext i8 %14 to i32
	switch i32 %15, label %L.10 [
		i32 73, label %L.12
		i32 74, label %L.13
		i32 72, label %L.14
	]
L.12:
	%16 = load %ast.AstNode** %lhs
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 10
	%18 = load i64* %17
	%19 = load %ast.AstNode** %rhs
	%20 = getelementptr %ast.AstNode* %19, i32 0, i32 10
	%21 = load i64* %20
	%22 = or i64 %18, %21
	%23 = load %ast.AstNode** %lhs
	%24 = getelementptr %ast.AstNode* %23, i32 0, i32 10
	store i64 %22, i64* %24
	br label %L.11
L.13:
	%25 = load %ast.AstNode** %lhs
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 10
	%27 = load i64* %26
	%28 = load %ast.AstNode** %rhs
	%29 = getelementptr %ast.AstNode* %28, i32 0, i32 10
	%30 = load i64* %29
	%31 = xor i64 %27, %30
	%32 = load %ast.AstNode** %lhs
	%33 = getelementptr %ast.AstNode* %32, i32 0, i32 10
	store i64 %31, i64* %33
	br label %L.11
L.14:
	%34 = load %ast.AstNode** %lhs
	%35 = getelementptr %ast.AstNode* %34, i32 0, i32 10
	%36 = load i64* %35
	%37 = load %ast.AstNode** %rhs
	%38 = getelementptr %ast.AstNode* %37, i32 0, i32 10
	%39 = load i64* %38
	%40 = and i64 %36, %39
	%41 = load %ast.AstNode** %lhs
	%42 = getelementptr %ast.AstNode* %41, i32 0, i32 10
	store i64 %40, i64* %42
	br label %L.11
L.10:
	br label %L.11
L.11:
	%43 = load %ast.AstNode** %lhs
	store %ast.AstNode* %43, %ast.AstNode** %tree
	br label %L.7
L.9:
	%44 = load i8* %op
	%45 = load %ast.AstNode** %lhs
	%46 = load %ast.AstNode** %rhs
	%47 = call %ast.AstNode* @ast_OpBinary(i8 %44, %ast.AstNode* %45, %ast.AstNode* %46, %type.TypeNode* null)
	store %ast.AstNode* %47, %ast.AstNode** %tree
	br label %L.7
L.7:
	br label %L.3
L.3:
	%48 = load %ast.AstNode** %tree
	store %ast.AstNode* %48, %ast.AstNode** %rv.0
	br label %return
return:
	%49 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %49
}
define internal %ast.AstNode* @ast_OpCompare(i8 zeroext %op$, %ast.AstNode* %lhs$, %ast.AstNode* %rhs$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%lhs = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	store i8 %op$, i8* %op
	store %ast.AstNode* %lhs$, %ast.AstNode** %lhs
	store %ast.AstNode* %rhs$, %ast.AstNode** %rhs
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load %ast.AstNode** %lhs
	%1 = icmp ne %ast.AstNode* %0, null
	br i1 %1, label %L.1, label %L.2
L.1:
	%2 = load %ast.AstNode** %rhs
	%3 = icmp ne %ast.AstNode* %2, null
	br label %L.2
L.2:
	%4 = phi i1 [ false, %L.0 ], [ %3, %L.1 ]
	br i1 %4, label %L.4, label %L.3
L.4:
	%5 = load %ast.AstNode** %lhs
	%6 = getelementptr %ast.AstNode* %5, i32 0, i32 0
	%7 = load i8* %6
	%8 = icmp eq i8 %7, 7
	br i1 %8, label %L.5, label %L.6
L.5:
	%9 = load %ast.AstNode** %rhs
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 0
	%11 = load i8* %10
	%12 = icmp eq i8 %11, 7
	br label %L.6
L.6:
	%13 = phi i1 [ false, %L.4 ], [ %12, %L.5 ]
	br i1 %13, label %L.8, label %L.9
L.8:
	%14 = load i8* %op
	%15 = zext i8 %14 to i32
	switch i32 %15, label %L.10 [
		i32 54, label %L.12
		i32 55, label %L.13
		i32 56, label %L.14
		i32 57, label %L.15
		i32 58, label %L.16
		i32 59, label %L.17
		i32 60, label %L.18
		i32 61, label %L.19
		i32 62, label %L.20
		i32 63, label %L.21
	]
L.12:
	%16 = load %ast.AstNode** %lhs
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 10
	%18 = load i64* %17
	%19 = load %ast.AstNode** %rhs
	%20 = getelementptr %ast.AstNode* %19, i32 0, i32 10
	%21 = load i64* %20
	%22 = icmp eq i64 %18, %21
	%23 = zext i1 %22 to i32
	%24 = zext i32 %23 to i64
	%25 = load %ast.AstNode** %lhs
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 10
	store i64 %24, i64* %26
	br label %L.11
L.13:
	%27 = load %ast.AstNode** %lhs
	%28 = getelementptr %ast.AstNode* %27, i32 0, i32 10
	%29 = load i64* %28
	%30 = load %ast.AstNode** %rhs
	%31 = getelementptr %ast.AstNode* %30, i32 0, i32 10
	%32 = load i64* %31
	%33 = icmp ne i64 %29, %32
	%34 = zext i1 %33 to i32
	%35 = zext i32 %34 to i64
	%36 = load %ast.AstNode** %lhs
	%37 = getelementptr %ast.AstNode* %36, i32 0, i32 10
	store i64 %35, i64* %37
	br label %L.11
L.14:
	%38 = load %ast.AstNode** %lhs
	%39 = getelementptr %ast.AstNode* %38, i32 0, i32 10
	%40 = load i64* %39
	%41 = load %ast.AstNode** %rhs
	%42 = getelementptr %ast.AstNode* %41, i32 0, i32 10
	%43 = load i64* %42
	%44 = icmp ult i64 %40, %43
	%45 = zext i1 %44 to i32
	%46 = zext i32 %45 to i64
	%47 = load %ast.AstNode** %lhs
	%48 = getelementptr %ast.AstNode* %47, i32 0, i32 10
	store i64 %46, i64* %48
	br label %L.11
L.15:
	%49 = load %ast.AstNode** %lhs
	%50 = getelementptr %ast.AstNode* %49, i32 0, i32 10
	%51 = load i64* %50
	%52 = load %ast.AstNode** %rhs
	%53 = getelementptr %ast.AstNode* %52, i32 0, i32 10
	%54 = load i64* %53
	%55 = icmp ugt i64 %51, %54
	%56 = zext i1 %55 to i32
	%57 = zext i32 %56 to i64
	%58 = load %ast.AstNode** %lhs
	%59 = getelementptr %ast.AstNode* %58, i32 0, i32 10
	store i64 %57, i64* %59
	br label %L.11
L.16:
	%60 = load %ast.AstNode** %lhs
	%61 = getelementptr %ast.AstNode* %60, i32 0, i32 10
	%62 = load i64* %61
	%63 = load %ast.AstNode** %rhs
	%64 = getelementptr %ast.AstNode* %63, i32 0, i32 10
	%65 = load i64* %64
	%66 = icmp ule i64 %62, %65
	%67 = zext i1 %66 to i32
	%68 = zext i32 %67 to i64
	%69 = load %ast.AstNode** %lhs
	%70 = getelementptr %ast.AstNode* %69, i32 0, i32 10
	store i64 %68, i64* %70
	br label %L.11
L.17:
	%71 = load %ast.AstNode** %lhs
	%72 = getelementptr %ast.AstNode* %71, i32 0, i32 10
	%73 = load i64* %72
	%74 = load %ast.AstNode** %rhs
	%75 = getelementptr %ast.AstNode* %74, i32 0, i32 10
	%76 = load i64* %75
	%77 = icmp uge i64 %73, %76
	%78 = zext i1 %77 to i32
	%79 = zext i32 %78 to i64
	%80 = load %ast.AstNode** %lhs
	%81 = getelementptr %ast.AstNode* %80, i32 0, i32 10
	store i64 %79, i64* %81
	br label %L.11
L.18:
	%82 = load %ast.AstNode** %lhs
	%83 = getelementptr %ast.AstNode* %82, i32 0, i32 10
	%84 = load i64* %83
	%85 = load %ast.AstNode** %rhs
	%86 = getelementptr %ast.AstNode* %85, i32 0, i32 10
	%87 = load i64* %86
	%88 = icmp slt i64 %84, %87
	%89 = zext i1 %88 to i32
	%90 = zext i32 %89 to i64
	%91 = load %ast.AstNode** %lhs
	%92 = getelementptr %ast.AstNode* %91, i32 0, i32 10
	store i64 %90, i64* %92
	br label %L.11
L.19:
	%93 = load %ast.AstNode** %lhs
	%94 = getelementptr %ast.AstNode* %93, i32 0, i32 10
	%95 = load i64* %94
	%96 = load %ast.AstNode** %rhs
	%97 = getelementptr %ast.AstNode* %96, i32 0, i32 10
	%98 = load i64* %97
	%99 = icmp sgt i64 %95, %98
	%100 = zext i1 %99 to i32
	%101 = zext i32 %100 to i64
	%102 = load %ast.AstNode** %lhs
	%103 = getelementptr %ast.AstNode* %102, i32 0, i32 10
	store i64 %101, i64* %103
	br label %L.11
L.20:
	%104 = load %ast.AstNode** %lhs
	%105 = getelementptr %ast.AstNode* %104, i32 0, i32 10
	%106 = load i64* %105
	%107 = load %ast.AstNode** %rhs
	%108 = getelementptr %ast.AstNode* %107, i32 0, i32 10
	%109 = load i64* %108
	%110 = icmp sle i64 %106, %109
	%111 = zext i1 %110 to i32
	%112 = zext i32 %111 to i64
	%113 = load %ast.AstNode** %lhs
	%114 = getelementptr %ast.AstNode* %113, i32 0, i32 10
	store i64 %112, i64* %114
	br label %L.11
L.21:
	%115 = load %ast.AstNode** %lhs
	%116 = getelementptr %ast.AstNode* %115, i32 0, i32 10
	%117 = load i64* %116
	%118 = load %ast.AstNode** %rhs
	%119 = getelementptr %ast.AstNode* %118, i32 0, i32 10
	%120 = load i64* %119
	%121 = icmp sge i64 %117, %120
	%122 = zext i1 %121 to i32
	%123 = zext i32 %122 to i64
	%124 = load %ast.AstNode** %lhs
	%125 = getelementptr %ast.AstNode* %124, i32 0, i32 10
	store i64 %123, i64* %125
	br label %L.11
L.10:
	br label %L.11
L.11:
	%126 = load %ast.AstNode** %lhs
	store %ast.AstNode* %126, %ast.AstNode** %tree
	br label %L.7
L.9:
	%127 = load %ast.AstNode** %lhs
	%128 = getelementptr %ast.AstNode* %127, i32 0, i32 8
	%129 = load %type.TypeNode** %128
	%130 = getelementptr %type.TypeNode* %129, i32 0, i32 14
	%131 = load i8* %130
	%132 = icmp eq i8 %131, 5
	br i1 %132, label %L.23, label %L.22
L.22:
	%133 = load %ast.AstNode** %lhs
	%134 = getelementptr %ast.AstNode* %133, i32 0, i32 8
	%135 = load %type.TypeNode** %134
	%136 = getelementptr %type.TypeNode* %135, i32 0, i32 14
	%137 = load i8* %136
	%138 = icmp eq i8 %137, 8
	br label %L.23
L.23:
	%139 = phi i1 [ true, %L.9 ], [ %138, %L.22 ]
	br i1 %139, label %L.25, label %L.24
L.25:
	%140 = load %ast.AstNode** %rhs
	%141 = getelementptr %ast.AstNode* %140, i32 0, i32 0
	%142 = load i8* %141
	%143 = icmp eq i8 %142, 7
	br i1 %143, label %L.27, label %L.26
L.27:
	%144 = load i8* %op
	%145 = icmp eq i8 %144, 54
	br i1 %145, label %L.29, label %L.28
L.28:
	%146 = load i8* %op
	%147 = icmp eq i8 %146, 55
	br label %L.29
L.29:
	%148 = phi i1 [ true, %L.27 ], [ %147, %L.28 ]
	br i1 %148, label %L.31, label %L.30
L.31:
	%149 = load %target.ModelT** @target_Target
	%150 = getelementptr %target.ModelT* %149, i32 0, i32 6
	%151 = getelementptr %target.SizeAlign* %150, i32 0, i32 0
	%152 = load i8* %151
	%153 = zext i8 %152 to i32
	%154 = load %ast.AstNode** %rhs
	%155 = getelementptr %ast.AstNode* %154, i32 0, i32 7
	store i32 %153, i32* %155
	br label %L.30
L.30:
	br label %L.26
L.26:
	br label %L.24
L.24:
	%156 = load i8* %op
	%157 = load %ast.AstNode** %lhs
	%158 = load %ast.AstNode** %rhs
	%159 = call %ast.AstNode* @ast_OpBinary(i8 %156, %ast.AstNode* %157, %ast.AstNode* %158, %type.TypeNode* null)
	store %ast.AstNode* %159, %ast.AstNode** %tree
	br label %L.7
L.7:
	%160 = load %type.TypeNode** @type_booltype
	%161 = load %ast.AstNode** %tree
	%162 = getelementptr %ast.AstNode* %161, i32 0, i32 8
	store %type.TypeNode* %160, %type.TypeNode** %162
	%163 = load %ast.AstNode** %tree
	%164 = getelementptr %ast.AstNode* %163, i32 0, i32 7
	store i32 1, i32* %164
	br label %L.3
L.3:
	%165 = load %ast.AstNode** %tree
	store %ast.AstNode* %165, %ast.AstNode** %rv.0
	br label %return
return:
	%166 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %166
}
define internal %ast.AstNode* @ast_OpFloat(i8 zeroext %op$, %ast.AstNode* %lhs$, %ast.AstNode* %rhs$, %type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%lhs = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store i8 %op$, i8* %op
	store %ast.AstNode* %lhs$, %ast.AstNode** %lhs
	store %ast.AstNode* %rhs$, %ast.AstNode** %rhs
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tree = alloca %ast.AstNode*
	%sl = alloca i32
	%sr = alloca i32
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load %ast.AstNode** %lhs
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 7
	%2 = load i32* %1
	store i32 %2, i32* %sl
	%3 = load %ast.AstNode** %rhs
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 7
	%5 = load i32* %4
	store i32 %5, i32* %sr
	%6 = load %type.TypeNode** %t
	%7 = icmp ne %type.TypeNode* %6, null
	br i1 %7, label %L.1, label %L.2
L.1:
	%8 = load %type.TypeNode** %t
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 10
	%10 = load i32* %9
	%11 = load i32* %sl
	%12 = icmp ugt i32 %10, %11
	br label %L.2
L.2:
	%13 = phi i1 [ false, %L.0 ], [ %12, %L.1 ]
	br i1 %13, label %L.4, label %L.3
L.4:
	%14 = load %ast.AstNode** %lhs
	%15 = load %type.TypeNode** %t
	%16 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %14, %type.TypeNode* %15)
	store %ast.AstNode* %16, %ast.AstNode** %lhs
	%17 = load %type.TypeNode** %t
	%18 = getelementptr %type.TypeNode* %17, i32 0, i32 10
	%19 = load i32* %18
	store i32 %19, i32* %sl
	br label %L.3
L.3:
	%20 = load i32* %sl
	%21 = load i32* %sr
	%22 = icmp ugt i32 %20, %21
	br i1 %22, label %L.6, label %L.7
L.6:
	%23 = load %ast.AstNode** %rhs
	%24 = load %ast.AstNode** %lhs
	%25 = getelementptr %ast.AstNode* %24, i32 0, i32 8
	%26 = load %type.TypeNode** %25
	%27 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %23, %type.TypeNode* %26)
	store %ast.AstNode* %27, %ast.AstNode** %rhs
	br label %L.5
L.7:
	%28 = load i32* %sr
	%29 = load i32* %sl
	%30 = icmp ugt i32 %28, %29
	br i1 %30, label %L.9, label %L.8
L.9:
	%31 = load %ast.AstNode** %lhs
	%32 = load %ast.AstNode** %rhs
	%33 = getelementptr %ast.AstNode* %32, i32 0, i32 8
	%34 = load %type.TypeNode** %33
	%35 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %31, %type.TypeNode* %34)
	store %ast.AstNode* %35, %ast.AstNode** %lhs
	br label %L.8
L.8:
	br label %L.5
L.5:
	%36 = load i8* %op
	%37 = load %ast.AstNode** %lhs
	%38 = getelementptr %ast.AstNode* %37, i32 0, i32 8
	%39 = load %type.TypeNode** %38
	%40 = load %ast.AstNode** %lhs
	%41 = load %ast.AstNode** %rhs
	%42 = call %ast.AstNode* @ast_New2(i8 %36, %type.TypeNode* %39, %ast.AstNode* %40, %ast.AstNode* %41)
	store %ast.AstNode* %42, %ast.AstNode** %rv.0
	br label %return
return:
	%43 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %43
}
define internal void @ast_Init() nounwind {
L.0:
	%0 = load %type.TypeNode** @type_unkntype
	%1 = call %ast.AstNode* @ast_New(i8 0, %type.TypeNode* %0)
	store %ast.AstNode* %1, %ast.AstNode** @ast_Null
	br label %return
return:
	ret void
}
@S.343 = internal constant [5 x i8] c"NULL\00"
@S.344 = internal constant [4 x i8] c"NOP\00"
@S.345 = internal constant [5 x i8] c"TYPE\00"
@S.346 = internal constant [5 x i8] c"FILE\00"
@S.347 = internal constant [8 x i8] c"PACKAGE\00"
@S.348 = internal constant [7 x i8] c"DCLVAR\00"
@S.349 = internal constant [7 x i8] c"DCLCON\00"
@S.350 = internal constant [6 x i8] c"CONST\00"
@S.351 = internal constant [7 x i8] c"FCONST\00"
@S.352 = internal constant [7 x i8] c"STRCON\00"
@S.358 = internal constant [6 x i8] c"CLIST\00"
@S.357 = internal constant [7 x i8] c"CRANGE\00"
@S.353 = internal constant [4 x i8] c"VAR\00"
@S.360 = internal constant [7 x i8] c"OFFSET\00"
@S.361 = internal constant [6 x i8] c"INDEX\00"
@S.362 = internal constant [6 x i8] c"SLICE\00"
@S.363 = internal constant [6 x i8] c"BYREF\00"
@S.359 = internal constant [5 x i8] c"CAST\00"
@S.354 = internal constant [5 x i8] c"CALL\00"
@S.355 = internal constant [6 x i8] c"CALLI\00"
@S.356 = internal constant [4 x i8] c"ASM\00"
@S.364 = internal constant [4 x i8] c"SET\00"
@S.365 = internal constant [5 x i8] c"COPY\00"
@S.366 = internal constant [6 x i8] c"ACOPY\00"
@S.367 = internal constant [4 x i8] c"AEQ\00"
@S.368 = internal constant [4 x i8] c"ANE\00"
@S.369 = internal constant [6 x i8] c"GETRV\00"
@S.370 = internal constant [5 x i8] c"LOAD\00"
@S.371 = internal constant [6 x i8] c"STORE\00"
@S.372 = internal constant [5 x i8] c"ZEXT\00"
@S.373 = internal constant [5 x i8] c"SEXT\00"
@S.374 = internal constant [6 x i8] c"TRUNC\00"
@S.375 = internal constant [5 x i8] c"REVB\00"
@S.376 = internal constant [4 x i8] c"NEG\00"
@S.377 = internal constant [4 x i8] c"NOT\00"
@S.378 = internal constant [4 x i8] c"ABS\00"
@S.379 = internal constant [5 x i8] c"FNEG\00"
@S.380 = internal constant [6 x i8] c"FCVTL\00"
@S.381 = internal constant [6 x i8] c"FCVTS\00"
@S.382 = internal constant [6 x i8] c"CVTUF\00"
@S.383 = internal constant [6 x i8] c"CVTIF\00"
@S.384 = internal constant [6 x i8] c"CVTFU\00"
@S.385 = internal constant [6 x i8] c"CVTFI\00"
@S.386 = internal constant [4 x i8] c"CLZ\00"
@S.387 = internal constant [6 x i8] c"CLZNZ\00"
@S.388 = internal constant [4 x i8] c"CTZ\00"
@S.389 = internal constant [6 x i8] c"CTZNZ\00"
@S.390 = internal constant [4 x i8] c"POP\00"
@S.391 = internal constant [5 x i8] c"ZLEN\00"
@S.392 = internal constant [4 x i8] c"ADD\00"
@S.393 = internal constant [4 x i8] c"SUB\00"
@S.394 = internal constant [4 x i8] c"MUL\00"
@S.395 = internal constant [4 x i8] c"DIV\00"
@S.396 = internal constant [4 x i8] c"MOD\00"
@S.397 = internal constant [3 x i8] c"EQ\00"
@S.398 = internal constant [3 x i8] c"NE\00"
@S.399 = internal constant [4 x i8] c"ULT\00"
@S.400 = internal constant [4 x i8] c"UGT\00"
@S.401 = internal constant [4 x i8] c"ULE\00"
@S.402 = internal constant [4 x i8] c"UGE\00"
@S.403 = internal constant [4 x i8] c"SLT\00"
@S.404 = internal constant [4 x i8] c"SGT\00"
@S.405 = internal constant [4 x i8] c"SLE\00"
@S.406 = internal constant [4 x i8] c"SGE\00"
@S.407 = internal constant [5 x i8] c"UMIN\00"
@S.408 = internal constant [5 x i8] c"UMAX\00"
@S.409 = internal constant [5 x i8] c"SMIN\00"
@S.410 = internal constant [5 x i8] c"SMAX\00"
@S.411 = internal constant [4 x i8] c"LSL\00"
@S.412 = internal constant [4 x i8] c"LSR\00"
@S.413 = internal constant [4 x i8] c"ASL\00"
@S.414 = internal constant [4 x i8] c"ASR\00"
@S.415 = internal constant [4 x i8] c"AND\00"
@S.416 = internal constant [3 x i8] c"OR\00"
@S.417 = internal constant [4 x i8] c"XOR\00"
@S.418 = internal constant [5 x i8] c"BAND\00"
@S.419 = internal constant [4 x i8] c"BOR\00"
@S.420 = internal constant [5 x i8] c"BNOT\00"
@S.421 = internal constant [5 x i8] c"FADD\00"
@S.422 = internal constant [5 x i8] c"FSUB\00"
@S.423 = internal constant [5 x i8] c"FMUL\00"
@S.424 = internal constant [5 x i8] c"FDIV\00"
@S.425 = internal constant [5 x i8] c"FREM\00"
@S.426 = internal constant [7 x i8] c"IFEXPR\00"
@S.427 = internal constant [4 x i8] c"SEQ\00"
@S.428 = internal constant [5 x i8] c"LOOP\00"
@S.429 = internal constant [5 x i8] c"EXIT\00"
@S.430 = internal constant [3 x i8] c"IF\00"
@S.431 = internal constant [4 x i8] c"SEL\00"
@S.432 = internal constant [3 x i8] c"IS\00"
@S.433 = internal constant [4 x i8] c"RET\00"
@S.434 = internal constant [5 x i8] c"PROC\00"
@ast_OpName = internal constant [92 x [0 x i8]*] [ [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.343 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.344 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.345 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.346 )  to [0 x i8]* ), [0 x i8]* bitcast( [8 x i8]* getelementptr( [8 x i8]* @S.347 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.348 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.349 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.350 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.351 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.352 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.358 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.357 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.353 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.360 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.361 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.362 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.363 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.359 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.354 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.355 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.356 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.364 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.365 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.366 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.367 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.368 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.369 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.370 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.371 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.372 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.373 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.374 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.375 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.376 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.377 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.378 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.379 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.380 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.381 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.382 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.383 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.384 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.385 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.386 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.387 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.388 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.389 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.390 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.391 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.392 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.393 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.394 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.395 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.396 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.397 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.398 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.399 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.400 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.401 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.402 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.403 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.404 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.405 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.406 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.407 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.408 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.409 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.410 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.411 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.412 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.413 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.414 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.415 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.416 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.417 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.418 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.419 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.420 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.421 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.422 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.423 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.424 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.425 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.426 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.427 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.428 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.429 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.430 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.431 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.432 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.433 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.434 )  to [0 x i8]* ) ], align 4
@S.435 = internal constant [5 x i8] c"(sz=\00"
@S.436 = internal constant [5 x i8] c" ln=\00"
@S.437 = internal constant [5 x i8] c" nc=\00"
@S.438 = internal constant [8 x i8] c" value \00"
@S.439 = internal constant [5 x i8] c" id \00"
@S.440 = internal constant [9 x i8] c" value \22\00"
@S.441 = internal constant [7 x i8] c" name \00"
@S.442 = internal constant [7 x i8] c"*NULL*\00"
define internal void @ast_Print(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%s = alloca %symb.SymbNode*
	%t = alloca %type.TypeNode*
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	store %type.TypeNode* %2, %type.TypeNode** %t
	%3 = load %ast.AstNode** %node
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 0
	%5 = load i8* %4
	%6 = icmp eq i8 %5, 20
	br i1 %6, label %L.2, label %L.1
L.2:
	store %type.TypeNode* null, %type.TypeNode** %t
	br label %L.1
L.1:
	%7 = load %ast.AstNode** %node
	%8 = getelementptr %ast.AstNode* %7, i32 0, i32 0
	%9 = load i8* %8
	%10 = zext i8 %9 to i32
	%11 = getelementptr [92 x [0 x i8]*]* @ast_OpName, i32 0, i32 %10
	%12 = load [0 x i8]** %11
	%13 = bitcast [0 x i8]* %12 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %13)
	%14 = getelementptr [5 x i8]* @S.435
	%15 = bitcast [5 x i8]* %14 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %15)
	%16 = load %ast.AstNode** %node
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 7
	%18 = load i32* %17
	call void @sys_fildes_uint(i32 2, i32 %18)
	%19 = getelementptr [5 x i8]* @S.436
	%20 = bitcast [5 x i8]* %19 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %20)
	%21 = load %ast.AstNode** %node
	%22 = getelementptr %ast.AstNode* %21, i32 0, i32 5
	%23 = load i16* %22
	%24 = zext i16 %23 to i32
	call void @sys_fildes_uint(i32 2, i32 %24)
	%25 = getelementptr [5 x i8]* @S.437
	%26 = bitcast [5 x i8]* %25 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %26)
	%27 = load %ast.AstNode** %node
	%28 = getelementptr %ast.AstNode* %27, i32 0, i32 2
	%29 = load i16* %28
	%30 = zext i16 %29 to i32
	call void @sys_fildes_uint(i32 2, i32 %30)
	%31 = load %ast.AstNode** %node
	%32 = getelementptr %ast.AstNode* %31, i32 0, i32 0
	%33 = load i8* %32
	%34 = zext i8 %33 to i32
	switch i32 %34, label %L.3 [
		i32 7, label %L.5
		i32 13, label %L.5
		i32 22, label %L.5
		i32 26, label %L.5
		i32 43, label %L.5
		i32 45, label %L.5
		i32 9, label %L.6
		i32 5, label %L.7
		i32 12, label %L.7
		i32 91, label %L.7
		i32 18, label %L.7
		i32 3, label %L.7
		i32 4, label %L.7
	]
L.5:
	%35 = getelementptr [8 x i8]* @S.438
	%36 = bitcast [8 x i8]* %35 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %36)
	%37 = load %ast.AstNode** %node
	%38 = getelementptr %ast.AstNode* %37, i32 0, i32 0
	%39 = load i8* %38
	%40 = icmp eq i8 %39, 7
	br i1 %40, label %L.8, label %L.9
L.8:
	%41 = load %ast.AstNode** %node
	%42 = getelementptr %ast.AstNode* %41, i32 0, i32 8
	%43 = load %type.TypeNode** %42
	%44 = getelementptr %type.TypeNode* %43, i32 0, i32 14
	%45 = load i8* %44
	%46 = icmp eq i8 %45, 3
	br label %L.9
L.9:
	%47 = phi i1 [ false, %L.5 ], [ %46, %L.8 ]
	br i1 %47, label %L.11, label %L.12
L.11:
	%48 = load %ast.AstNode** %node
	%49 = getelementptr %ast.AstNode* %48, i32 0, i32 10
	%50 = load i64* %49
	call void @sys_fildes_int64(i32 2, i64 %50)
	br label %L.10
L.12:
	%51 = load %ast.AstNode** %node
	%52 = getelementptr %ast.AstNode* %51, i32 0, i32 10
	%53 = load i64* %52
	call void @sys_fildes_uint64(i32 2, i64 %53)
	br label %L.10
L.10:
	br label %L.4
L.6:
	%54 = getelementptr [5 x i8]* @S.439
	%55 = bitcast [5 x i8]* %54 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %55)
	%56 = load %ast.AstNode** %node
	%57 = getelementptr %ast.AstNode* %56, i32 0, i32 10
	%58 = load i64* %57
	%59 = trunc i64 %58 to i32
	call void @sys_fildes_uint32(i32 2, i32 %59)
	%60 = getelementptr [9 x i8]* @S.440
	%61 = bitcast [9 x i8]* %60 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %61)
	%62 = load %ast.AstNode** %node
	%63 = getelementptr %ast.AstNode* %62, i32 0, i32 9
	%64 = load %symb.SymbNode** %63
	%65 = getelementptr %symb.SymbNode* %64, i32 0, i32 22
	%66 = getelementptr [0 x i8]* %65
	%67 = bitcast [0 x i8]* %66 to [0 x i8]*
	%68 = load %ast.AstNode** %node
	%69 = getelementptr %ast.AstNode* %68, i32 0, i32 8
	%70 = load %type.TypeNode** %69
	%71 = call i32 @type_TypeNode_Span(%type.TypeNode* %70)
	%72 = sub i32 %71, 1
	call void @sys_fildes_strn(i32 2, [0 x i8]* %67, i32 %72)
	call void @sys_fildes_chr(i32 2, i8 34)
	br label %L.4
L.7:
	%73 = getelementptr [7 x i8]* @S.441
	%74 = bitcast [7 x i8]* %73 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %74)
	%75 = load %ast.AstNode** %node
	%76 = getelementptr %ast.AstNode* %75, i32 0, i32 9
	%77 = load %symb.SymbNode** %76
	store %symb.SymbNode* %77, %symb.SymbNode** %s
	%78 = load %symb.SymbNode** %s
	%79 = icmp ne %symb.SymbNode* %78, null
	br i1 %79, label %L.14, label %L.15
L.14:
	%80 = load %symb.SymbNode** %s
	%81 = getelementptr %symb.SymbNode* %80, i32 0, i32 22
	%82 = getelementptr [0 x i8]* %81
	%83 = bitcast [0 x i8]* %82 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %83)
	br label %L.13
L.15:
	%84 = getelementptr [7 x i8]* @S.442
	%85 = bitcast [7 x i8]* %84 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %85)
	br label %L.13
L.13:
	br label %L.4
L.3:
	br label %L.4
L.4:
	call void @sys_fildes_chr(i32 2, i8 41)
	%86 = load %type.TypeNode** %t
	%87 = icmp ne %type.TypeNode* %86, null
	br i1 %87, label %L.17, label %L.16
L.17:
	call void @sys_fildes_chr(i32 2, i8 58)
	%88 = load %type.TypeNode** %t
	call void @type_DumpT(%type.TypeNode* %88, i8 0)
	br label %L.16
L.16:
	call void @sys_fildes_nl(i32 2)
	br label %return
return:
	ret void
}
@ast_blanks = internal constant [65 x i8] c"                                                                \00", align 1
@S.444 = internal constant [8 x i8] c"*NULL*\0A\00"
define internal void @ast_DumpSub(%ast.AstNode* %tree$, i32 %level$) nounwind {
L.0:
	%tree = alloca %ast.AstNode*
	%level = alloca i32
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	store i32 %level$, i32* %level
	%i = alloca i16
	%0 = bitcast [65 x i8]* @ast_blanks to [0 x i8]*
	%1 = load i32* %level
	%2 = call i32 @write(i32 2, [0 x i8]* %0, i32 %1)
	%3 = load %ast.AstNode** %tree
	%4 = icmp eq %ast.AstNode* %3, null
	br i1 %4, label %L.2, label %L.3
L.2:
	%5 = getelementptr [8 x i8]* @S.444
	%6 = bitcast [8 x i8]* %5 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %6)
	br label %L.1
L.3:
	%7 = load %ast.AstNode** %tree
	call void @ast_Print(%ast.AstNode* %7)
	store i16 0, i16* %i
	br label %L.4
L.4:
	%8 = load i16* %i
	%9 = load %ast.AstNode** %tree
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 2
	%11 = load i16* %10
	%12 = icmp ult i16 %8, %11
	%13 = xor i1 %12, true
	br i1 %13, label %L.5, label %L.6
L.6:
	%14 = load %ast.AstNode** %tree
	%15 = getelementptr %ast.AstNode* %14, i32 0, i32 11
	%16 = load i16* %i
	%17 = zext i16 %16 to i32
	%18 = getelementptr [0 x %ast.AstNode*]* %15, i32 0, i32 %17
	%19 = load %ast.AstNode** %18
	%20 = bitcast %ast.AstNode* %19 to %ast.AstNode*
	%21 = load i32* %level
	%22 = add i32 %21, 1
	call void @ast_DumpSub(%ast.AstNode* %20, i32 %22)
	%23 = load i16* %i
	%24 = add i16 %23, 1
	store i16 %24, i16* %i
	br label %L.4
L.5:
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
define internal void @ast_Dump(%ast.AstNode* %tree$) nounwind {
L.0:
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	%0 = load %ast.AstNode** %tree
	call void @ast_DumpSub(%ast.AstNode* %0, i32 0)
	br label %return
return:
	ret void
}
define internal void @symb_NewIntrinsic([0 x i8]* %name$, i8 zeroext %valu$) nounwind {
L.0:
	%name = alloca [0 x i8]*
	%valu = alloca i8
	store [0 x i8]* %name$, [0 x i8]** %name
	store i8 %valu$, i8* %valu
	%s = alloca %symb.SymbNode*
	%0 = load [0 x i8]** %name
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = call %symb.SymbNode* @symb_New(i8 5, [0 x i8]* %1, i8 0)
	store %symb.SymbNode* %2, %symb.SymbNode** %s
	%3 = load i8* %valu
	%4 = zext i8 %3 to i16
	%5 = load %symb.SymbNode** %s
	%6 = getelementptr %symb.SymbNode* %5, i32 0, i32 10
	store i16 %4, i16* %6
	br label %return
return:
	ret void
}
define internal %symb.SymbNode* @symb_NewLibrary([0 x i8]* %name$, %type.TypeNode* %rett$) nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%name = alloca [0 x i8]*
	%rett = alloca %type.TypeNode*
	store [0 x i8]* %name$, [0 x i8]** %name
	store %type.TypeNode* %rett$, %type.TypeNode** %rett
	%s = alloca %symb.SymbNode*
	%tl = alloca %type.TypeListEntry*
	%0 = load [0 x i8]** %name
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = call %symb.SymbNode* @symb_New(i8 5, [0 x i8]* %1, i8 0)
	store %symb.SymbNode* %2, %symb.SymbNode** %s
	%3 = load %symb.SymbNode** %s
	%4 = getelementptr %symb.SymbNode* %3, i32 0, i32 14
	store i8 5, i8* %4
	%5 = load %type.TypeNode** %rett
	%6 = icmp ne %type.TypeNode* %5, null
	br i1 %6, label %L.2, label %L.1
L.2:
	%7 = call [0 x i8]* @sys_zalloc(i32 8)
	%8 = bitcast [0 x i8]* %7 to %type.TypeListEntry*
	store %type.TypeListEntry* %8, %type.TypeListEntry** %tl
	%9 = load %type.TypeNode** %rett
	%10 = bitcast %type.TypeNode* %9 to %type.TypeNode*
	%11 = load %type.TypeListEntry** %tl
	%12 = getelementptr %type.TypeListEntry* %11, i32 0, i32 1
	store %type.TypeNode* %10, %type.TypeNode** %12
	%13 = load %type.TypeListEntry** %tl
	%14 = load %symb.SymbNode** %s
	%15 = getelementptr %symb.SymbNode* %14, i32 0, i32 4
	store %type.TypeListEntry* %13, %type.TypeListEntry** %15
	%16 = load %type.TypeNode** %rett
	%17 = load %symb.SymbNode** %s
	%18 = getelementptr %symb.SymbNode* %17, i32 0, i32 1
	store %type.TypeNode* %16, %type.TypeNode** %18
	br label %L.1
L.1:
	%19 = load %symb.SymbNode** %s
	store %symb.SymbNode* %19, %symb.SymbNode** %rv.0
	br label %return
return:
	%20 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %20
}
@S.445 = internal constant [2 x i8] c"_\00"
define internal void @symb_AddLibFormal(%symb.SymbNode* %s$, %type.TypeNode* %t$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	%t = alloca %type.TypeNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%fs = alloca %symb.SymbNode*
	%pfs = alloca %symb.SymbNode*
	%tfs = alloca %symb.SymbNode*
	%0 = getelementptr [2 x i8]* @S.445
	%1 = bitcast [2 x i8]* %0 to [0 x i8]*
	%2 = call %symb.SymbNode* @symb_New(i8 3, [0 x i8]* %1, i8 2)
	store %symb.SymbNode* %2, %symb.SymbNode** %fs
	%3 = load %symb.SymbNode** %fs
	%4 = getelementptr %symb.SymbNode* %3, i32 0, i32 14
	store i8 0, i8* %4
	%5 = load %type.TypeNode** %t
	%6 = load %symb.SymbNode** %fs
	%7 = getelementptr %symb.SymbNode* %6, i32 0, i32 1
	store %type.TypeNode* %5, %type.TypeNode** %7
	store %symb.SymbNode* null, %symb.SymbNode** %pfs
	%8 = load %symb.SymbNode** %s
	%9 = getelementptr %symb.SymbNode* %8, i32 0, i32 3
	%10 = load %symb.SymbNode** %9
	%11 = bitcast %symb.SymbNode* %10 to %symb.SymbNode*
	store %symb.SymbNode* %11, %symb.SymbNode** %tfs
	br label %L.1
L.1:
	%12 = load %symb.SymbNode** %tfs
	%13 = icmp ne %symb.SymbNode* %12, null
	%14 = xor i1 %13, true
	br i1 %14, label %L.2, label %L.3
L.3:
	%15 = load %symb.SymbNode** %tfs
	store %symb.SymbNode* %15, %symb.SymbNode** %pfs
	%16 = load %symb.SymbNode** %tfs
	%17 = getelementptr %symb.SymbNode* %16, i32 0, i32 0
	%18 = load %symb.SymbNode** %17
	%19 = bitcast %symb.SymbNode* %18 to %symb.SymbNode*
	store %symb.SymbNode* %19, %symb.SymbNode** %tfs
	br label %L.1
L.2:
	%20 = load %symb.SymbNode** %pfs
	%21 = icmp eq %symb.SymbNode* %20, null
	br i1 %21, label %L.5, label %L.6
L.5:
	%22 = load %symb.SymbNode** %fs
	%23 = bitcast %symb.SymbNode* %22 to %symb.SymbNode*
	%24 = load %symb.SymbNode** %s
	%25 = getelementptr %symb.SymbNode* %24, i32 0, i32 3
	store %symb.SymbNode* %23, %symb.SymbNode** %25
	br label %L.4
L.6:
	%26 = load %symb.SymbNode** %fs
	%27 = bitcast %symb.SymbNode* %26 to %symb.SymbNode*
	%28 = load %symb.SymbNode** %pfs
	%29 = getelementptr %symb.SymbNode* %28, i32 0, i32 0
	store %symb.SymbNode* %27, %symb.SymbNode** %29
	br label %L.4
L.4:
	br label %return
return:
	ret void
}
@S.446 = internal constant [5 x i8] c"true\00"
@S.447 = internal constant [6 x i8] c"false\00"
@S.448 = internal constant [9 x i8] c"_boolean\00"
@S.449 = internal constant [8 x i8] c"boolean\00"
@S.450 = internal constant [6 x i8] c"false\00"
@S.451 = internal constant [5 x i8] c"true\00"
@S.452 = internal constant [6 x i8] c"_byte\00"
@S.453 = internal constant [8 x i8] c"_memory\00"
@S.454 = internal constant [9 x i8] c"_address\00"
@S.455 = internal constant [6 x i8] c"_uint\00"
@S.456 = internal constant [5 x i8] c"_int\00"
@S.457 = internal constant [9 x i8] c"_uintptr\00"
@S.458 = internal constant [7 x i8] c"_uint8\00"
@S.459 = internal constant [6 x i8] c"_int8\00"
@S.460 = internal constant [8 x i8] c"_uint16\00"
@S.461 = internal constant [7 x i8] c"_int16\00"
@S.462 = internal constant [8 x i8] c"_uint32\00"
@S.463 = internal constant [7 x i8] c"_int32\00"
@S.464 = internal constant [8 x i8] c"_uint64\00"
@S.465 = internal constant [7 x i8] c"_int64\00"
@S.466 = internal constant [9 x i8] c"_uint128\00"
@S.467 = internal constant [8 x i8] c"_int128\00"
@S.468 = internal constant [9 x i8] c"_float32\00"
@S.469 = internal constant [9 x i8] c"_float64\00"
@S.470 = internal constant [9 x i8] c"_defined\00"
@S.471 = internal constant [5 x i8] c"_abs\00"
@S.472 = internal constant [5 x i8] c"_min\00"
@S.473 = internal constant [5 x i8] c"_max\00"
@S.474 = internal constant [5 x i8] c"_clz\00"
@S.475 = internal constant [7 x i8] c"_clznz\00"
@S.476 = internal constant [5 x i8] c"_ctz\00"
@S.477 = internal constant [7 x i8] c"_ctznz\00"
@S.478 = internal constant [5 x i8] c"_pop\00"
@S.479 = internal constant [5 x i8] c"_cvt\00"
@S.480 = internal constant [5 x i8] c"_new\00"
@S.481 = internal constant [8 x i8] c"_delete\00"
@S.482 = internal constant [6 x i8] c"_zero\00"
@S.483 = internal constant [6 x i8] c"_zlen\00"
@S.484 = internal constant [9 x i8] c"memalloc\00"
@S.485 = internal constant [8 x i8] c"memfree\00"
define internal void @symb_InitDecl() nounwind {
L.0:
	%t = alloca %type.TypeNode*
	%taddr = alloca %type.TypeNode*
	%s = alloca %symb.SymbNode*
	%s0 = alloca %symb.SymbNode*
	%s1 = alloca %symb.SymbNode*
	%0 = call %type.TypeNode* @type_New(i8 1)
	store %type.TypeNode* %0, %type.TypeNode** %t
	%1 = load %type.TypeNode** %t
	%2 = getelementptr %type.TypeNode* %1, i32 0, i32 9
	store i32 1, i32* %2
	%3 = getelementptr [5 x i8]* @S.446
	%4 = bitcast [5 x i8]* %3 to [0 x i8]*
	%5 = call %symb.SymbNode* @symb_New(i8 1, [0 x i8]* %4, i8 2)
	store %symb.SymbNode* %5, %symb.SymbNode** %s1
	%6 = load %type.TypeNode** %t
	%7 = call %ast.AstNode* @ast_Const(%type.TypeNode* %6, i64 1)
	%8 = bitcast %ast.AstNode* %7 to %ast.AstNode*
	%9 = load %symb.SymbNode** %s1
	%10 = getelementptr %symb.SymbNode* %9, i32 0, i32 8
	store %ast.AstNode* %8, %ast.AstNode** %10
	%11 = getelementptr [6 x i8]* @S.447
	%12 = bitcast [6 x i8]* %11 to [0 x i8]*
	%13 = call %symb.SymbNode* @symb_New(i8 1, [0 x i8]* %12, i8 2)
	store %symb.SymbNode* %13, %symb.SymbNode** %s0
	%14 = load %type.TypeNode** %t
	%15 = call %ast.AstNode* @ast_Const(%type.TypeNode* %14, i64 0)
	%16 = bitcast %ast.AstNode* %15 to %ast.AstNode*
	%17 = load %symb.SymbNode** %s0
	%18 = getelementptr %symb.SymbNode* %17, i32 0, i32 8
	store %ast.AstNode* %16, %ast.AstNode** %18
	%19 = load %symb.SymbNode** %s1
	%20 = bitcast %symb.SymbNode* %19 to %symb.SymbNode*
	%21 = load %symb.SymbNode** %s0
	%22 = getelementptr %symb.SymbNode* %21, i32 0, i32 0
	store %symb.SymbNode* %20, %symb.SymbNode** %22
	%23 = load %symb.SymbNode** %s0
	%24 = bitcast %symb.SymbNode* %23 to %symb.SymbNode*
	%25 = load %type.TypeNode** %t
	%26 = getelementptr %type.TypeNode* %25, i32 0, i32 4
	store %symb.SymbNode* %24, %symb.SymbNode** %26
	%27 = load %type.TypeNode** %t
	call void @type_Final(%type.TypeNode* %27)
	%28 = getelementptr [9 x i8]* @S.448
	%29 = bitcast [9 x i8]* %28 to [0 x i8]*
	%30 = call %symb.SymbNode* @symb_New(i8 2, [0 x i8]* %29, i8 0)
	store %symb.SymbNode* %30, %symb.SymbNode** %s
	%31 = load %type.TypeNode** %t
	%32 = load %symb.SymbNode** %s
	%33 = getelementptr %symb.SymbNode* %32, i32 0, i32 1
	store %type.TypeNode* %31, %type.TypeNode** %33
	%34 = load %symb.SymbNode** %s
	%35 = bitcast %symb.SymbNode* %34 to %symb.SymbNode*
	%36 = load %type.TypeNode** %t
	%37 = getelementptr %type.TypeNode* %36, i32 0, i32 3
	store %symb.SymbNode* %35, %symb.SymbNode** %37
	%38 = load %type.TypeNode** %t
	store %type.TypeNode* %38, %type.TypeNode** @type_booltype
	%39 = load %symb.SymbNode** %s
	%40 = getelementptr [8 x i8]* @S.449
	%41 = bitcast [8 x i8]* %40 to [0 x i8]*
	%42 = call %symb.SymbNode* @symb_Clone(%symb.SymbNode* %39, [0 x i8]* %41)
	store %symb.SymbNode* %42, %symb.SymbNode** %s
	%43 = getelementptr [6 x i8]* @S.450
	%44 = bitcast [6 x i8]* %43 to [0 x i8]*
	%45 = call %symb.SymbNode* @symb_New(i8 1, [0 x i8]* %44, i8 0)
	store %symb.SymbNode* %45, %symb.SymbNode** %s
	%46 = load %type.TypeNode** %t
	%47 = load %symb.SymbNode** %s
	%48 = getelementptr %symb.SymbNode* %47, i32 0, i32 1
	store %type.TypeNode* %46, %type.TypeNode** %48
	%49 = load %type.TypeNode** %t
	%50 = call %ast.AstNode* @ast_Const(%type.TypeNode* %49, i64 0)
	%51 = bitcast %ast.AstNode* %50 to %ast.AstNode*
	%52 = load %symb.SymbNode** %s
	%53 = getelementptr %symb.SymbNode* %52, i32 0, i32 8
	store %ast.AstNode* %51, %ast.AstNode** %53
	%54 = getelementptr [5 x i8]* @S.451
	%55 = bitcast [5 x i8]* %54 to [0 x i8]*
	%56 = call %symb.SymbNode* @symb_New(i8 1, [0 x i8]* %55, i8 0)
	store %symb.SymbNode* %56, %symb.SymbNode** %s
	%57 = load %type.TypeNode** %t
	%58 = load %symb.SymbNode** %s
	%59 = getelementptr %symb.SymbNode* %58, i32 0, i32 1
	store %type.TypeNode* %57, %type.TypeNode** %59
	%60 = load %type.TypeNode** %t
	%61 = call %ast.AstNode* @ast_Const(%type.TypeNode* %60, i64 1)
	%62 = bitcast %ast.AstNode* %61 to %ast.AstNode*
	%63 = load %symb.SymbNode** %s
	%64 = getelementptr %symb.SymbNode* %63, i32 0, i32 8
	store %ast.AstNode* %62, %ast.AstNode** %64
	%65 = getelementptr [6 x i8]* @S.452
	%66 = bitcast [6 x i8]* %65 to [0 x i8]*
	%67 = load %target.ModelT** @target_Target
	%68 = getelementptr %target.ModelT* %67, i32 0, i32 2
	%69 = load i8* %68
	%70 = zext i8 %69 to i32
	%71 = call %type.TypeNode* @type_NewBuiltin(i8 2, [0 x i8]* %66, i32 %70)
	store %type.TypeNode* %71, %type.TypeNode** @type_bytetype
	%72 = getelementptr [8 x i8]* @S.453
	%73 = bitcast [8 x i8]* %72 to [0 x i8]*
	%74 = call %type.TypeNode* @type_NewBuiltin(i8 6, [0 x i8]* %73, i32 0)
	store %type.TypeNode* %74, %type.TypeNode** @type_memtype
	%75 = load %type.TypeNode** @type_bytetype
	%76 = bitcast %type.TypeNode* %75 to %type.TypeNode*
	%77 = load %type.TypeNode** @type_memtype
	%78 = getelementptr %type.TypeNode* %77, i32 0, i32 0
	store %type.TypeNode* %76, %type.TypeNode** %78
	%79 = load %target.ModelT** @target_Target
	%80 = getelementptr %target.ModelT* %79, i32 0, i32 2
	%81 = load i8* %80
	%82 = zext i8 %81 to i32
	%83 = load %type.TypeNode** @type_memtype
	%84 = getelementptr %type.TypeNode* %83, i32 0, i32 11
	store i32 %82, i32* %84
	%85 = load %type.TypeNode** @type_memtype
	%86 = getelementptr %type.TypeNode* %85, i32 0, i32 25
	store i8 1, i8* %86
	%87 = getelementptr [9 x i8]* @S.454
	%88 = bitcast [9 x i8]* %87 to [0 x i8]*
	%89 = load %target.ModelT** @target_Target
	%90 = getelementptr %target.ModelT* %89, i32 0, i32 6
	%91 = getelementptr %target.SizeAlign* %90, i32 0, i32 0
	%92 = load i8* %91
	%93 = zext i8 %92 to i32
	%94 = call %type.TypeNode* @type_NewBuiltin(i8 5, [0 x i8]* %88, i32 %93)
	store %type.TypeNode* %94, %type.TypeNode** %taddr
	%95 = load %type.TypeNode** @type_memtype
	%96 = bitcast %type.TypeNode* %95 to %type.TypeNode*
	%97 = load %type.TypeNode** %taddr
	%98 = getelementptr %type.TypeNode* %97, i32 0, i32 0
	store %type.TypeNode* %96, %type.TypeNode** %98
	%99 = load %target.ModelT** @target_Target
	%100 = getelementptr %target.ModelT* %99, i32 0, i32 6
	%101 = getelementptr %target.SizeAlign* %100, i32 0, i32 1
	%102 = load i8* %101
	%103 = zext i8 %102 to i32
	%104 = load %type.TypeNode** %taddr
	%105 = getelementptr %type.TypeNode* %104, i32 0, i32 11
	store i32 %103, i32* %105
	%106 = load %type.TypeNode** %taddr
	store %type.TypeNode* %106, %type.TypeNode** @type_addrtype
	%107 = getelementptr [6 x i8]* @S.455
	%108 = bitcast [6 x i8]* %107 to [0 x i8]*
	%109 = load %target.ModelT** @target_Target
	%110 = getelementptr %target.ModelT* %109, i32 0, i32 3
	%111 = load i8* %110
	%112 = zext i8 %111 to i32
	%113 = call %type.TypeNode* @type_NewBuiltin(i8 2, [0 x i8]* %108, i32 %112)
	store %type.TypeNode* %113, %type.TypeNode** @type_wordtype
	%114 = getelementptr [5 x i8]* @S.456
	%115 = bitcast [5 x i8]* %114 to [0 x i8]*
	%116 = load %target.ModelT** @target_Target
	%117 = getelementptr %target.ModelT* %116, i32 0, i32 3
	%118 = load i8* %117
	%119 = zext i8 %118 to i32
	%120 = call %type.TypeNode* @type_NewBuiltin(i8 3, [0 x i8]* %115, i32 %119)
	store %type.TypeNode* %120, %type.TypeNode** @type_swordtype
	%121 = getelementptr [9 x i8]* @S.457
	%122 = bitcast [9 x i8]* %121 to [0 x i8]*
	%123 = load %target.ModelT** @target_Target
	%124 = getelementptr %target.ModelT* %123, i32 0, i32 6
	%125 = getelementptr %target.SizeAlign* %124, i32 0, i32 0
	%126 = load i8* %125
	%127 = zext i8 %126 to i32
	%128 = call %type.TypeNode* @type_NewBuiltin(i8 2, [0 x i8]* %122, i32 %127)
	store %type.TypeNode* %128, %type.TypeNode** @type_uintptrtype
	%129 = getelementptr [7 x i8]* @S.458
	%130 = bitcast [7 x i8]* %129 to [0 x i8]*
	%131 = call %type.TypeNode* @type_NewBuiltin(i8 2, [0 x i8]* %130, i32 8)
	%132 = getelementptr [6 x %type.TypeNode*]* @type_uinttypes, i32 0, i32 0
	store %type.TypeNode* %131, %type.TypeNode** %132
	%133 = getelementptr [6 x i8]* @S.459
	%134 = bitcast [6 x i8]* %133 to [0 x i8]*
	%135 = call %type.TypeNode* @type_NewBuiltin(i8 3, [0 x i8]* %134, i32 8)
	%136 = getelementptr [6 x %type.TypeNode*]* @type_inttypes, i32 0, i32 0
	store %type.TypeNode* %135, %type.TypeNode** %136
	%137 = getelementptr [8 x i8]* @S.460
	%138 = bitcast [8 x i8]* %137 to [0 x i8]*
	%139 = call %type.TypeNode* @type_NewBuiltin(i8 2, [0 x i8]* %138, i32 16)
	%140 = getelementptr [6 x %type.TypeNode*]* @type_uinttypes, i32 0, i32 1
	store %type.TypeNode* %139, %type.TypeNode** %140
	%141 = getelementptr [7 x i8]* @S.461
	%142 = bitcast [7 x i8]* %141 to [0 x i8]*
	%143 = call %type.TypeNode* @type_NewBuiltin(i8 3, [0 x i8]* %142, i32 16)
	%144 = getelementptr [6 x %type.TypeNode*]* @type_inttypes, i32 0, i32 1
	store %type.TypeNode* %143, %type.TypeNode** %144
	%145 = getelementptr [8 x i8]* @S.462
	%146 = bitcast [8 x i8]* %145 to [0 x i8]*
	%147 = call %type.TypeNode* @type_NewBuiltin(i8 2, [0 x i8]* %146, i32 32)
	%148 = getelementptr [6 x %type.TypeNode*]* @type_uinttypes, i32 0, i32 2
	store %type.TypeNode* %147, %type.TypeNode** %148
	%149 = getelementptr [7 x i8]* @S.463
	%150 = bitcast [7 x i8]* %149 to [0 x i8]*
	%151 = call %type.TypeNode* @type_NewBuiltin(i8 3, [0 x i8]* %150, i32 32)
	%152 = getelementptr [6 x %type.TypeNode*]* @type_inttypes, i32 0, i32 2
	store %type.TypeNode* %151, %type.TypeNode** %152
	%153 = getelementptr [8 x i8]* @S.464
	%154 = bitcast [8 x i8]* %153 to [0 x i8]*
	%155 = call %type.TypeNode* @type_NewBuiltin(i8 2, [0 x i8]* %154, i32 64)
	%156 = getelementptr [6 x %type.TypeNode*]* @type_uinttypes, i32 0, i32 3
	store %type.TypeNode* %155, %type.TypeNode** %156
	%157 = getelementptr [7 x i8]* @S.465
	%158 = bitcast [7 x i8]* %157 to [0 x i8]*
	%159 = call %type.TypeNode* @type_NewBuiltin(i8 3, [0 x i8]* %158, i32 64)
	%160 = getelementptr [6 x %type.TypeNode*]* @type_inttypes, i32 0, i32 3
	store %type.TypeNode* %159, %type.TypeNode** %160
	%161 = load %target.ModelT** @target_Target
	%162 = getelementptr %target.ModelT* %161, i32 0, i32 7
	%163 = getelementptr [6 x %target.SizeAlign]* %162, i32 0, i32 4
	%164 = getelementptr %target.SizeAlign* %163, i32 0, i32 0
	%165 = load i8* %164
	%166 = icmp ne i8 %165, 0
	br i1 %166, label %L.2, label %L.1
L.2:
	%167 = getelementptr [9 x i8]* @S.466
	%168 = bitcast [9 x i8]* %167 to [0 x i8]*
	%169 = call %type.TypeNode* @type_NewBuiltin(i8 2, [0 x i8]* %168, i32 128)
	%170 = getelementptr [6 x %type.TypeNode*]* @type_uinttypes, i32 0, i32 4
	store %type.TypeNode* %169, %type.TypeNode** %170
	%171 = getelementptr [8 x i8]* @S.467
	%172 = bitcast [8 x i8]* %171 to [0 x i8]*
	%173 = call %type.TypeNode* @type_NewBuiltin(i8 3, [0 x i8]* %172, i32 128)
	%174 = getelementptr [6 x %type.TypeNode*]* @type_inttypes, i32 0, i32 4
	store %type.TypeNode* %173, %type.TypeNode** %174
	br label %L.1
L.1:
	%175 = getelementptr [9 x i8]* @S.468
	%176 = bitcast [9 x i8]* %175 to [0 x i8]*
	%177 = call %type.TypeNode* @type_NewBuiltin(i8 4, [0 x i8]* %176, i32 32)
	%178 = getelementptr [2 x %type.TypeNode*]* @type_floattypes, i32 0, i32 0
	store %type.TypeNode* %177, %type.TypeNode** %178
	%179 = getelementptr [9 x i8]* @S.469
	%180 = bitcast [9 x i8]* %179 to [0 x i8]*
	%181 = call %type.TypeNode* @type_NewBuiltin(i8 4, [0 x i8]* %180, i32 64)
	%182 = getelementptr [2 x %type.TypeNode*]* @type_floattypes, i32 0, i32 1
	store %type.TypeNode* %181, %type.TypeNode** %182
	%183 = getelementptr [2 x %type.TypeNode*]* @type_floattypes, i32 0, i32 1
	%184 = load %type.TypeNode** %183
	store %type.TypeNode* %184, %type.TypeNode** @type_floattype
	%185 = call %type.TypeNode* @type_New(i8 0)
	store %type.TypeNode* %185, %type.TypeNode** @type_unkntype
	%186 = load %target.ModelT** @target_Target
	%187 = getelementptr %target.ModelT* %186, i32 0, i32 2
	%188 = load i8* %187
	%189 = zext i8 %188 to i32
	%190 = load %type.TypeNode** @type_unkntype
	%191 = getelementptr %type.TypeNode* %190, i32 0, i32 9
	store i32 %189, i32* %191
	%192 = load %target.ModelT** @target_Target
	%193 = getelementptr %target.ModelT* %192, i32 0, i32 2
	%194 = load i8* %193
	%195 = zext i8 %194 to i32
	%196 = load %type.TypeNode** @type_unkntype
	%197 = getelementptr %type.TypeNode* %196, i32 0, i32 11
	store i32 %195, i32* %197
	%198 = getelementptr [9 x i8]* @S.470
	%199 = bitcast [9 x i8]* %198 to [0 x i8]*
	call void @symb_NewIntrinsic([0 x i8]* %199, i8 1)
	%200 = getelementptr [5 x i8]* @S.471
	%201 = bitcast [5 x i8]* %200 to [0 x i8]*
	call void @symb_NewIntrinsic([0 x i8]* %201, i8 2)
	%202 = getelementptr [5 x i8]* @S.472
	%203 = bitcast [5 x i8]* %202 to [0 x i8]*
	call void @symb_NewIntrinsic([0 x i8]* %203, i8 3)
	%204 = getelementptr [5 x i8]* @S.473
	%205 = bitcast [5 x i8]* %204 to [0 x i8]*
	call void @symb_NewIntrinsic([0 x i8]* %205, i8 4)
	%206 = getelementptr [5 x i8]* @S.474
	%207 = bitcast [5 x i8]* %206 to [0 x i8]*
	call void @symb_NewIntrinsic([0 x i8]* %207, i8 5)
	%208 = getelementptr [7 x i8]* @S.475
	%209 = bitcast [7 x i8]* %208 to [0 x i8]*
	call void @symb_NewIntrinsic([0 x i8]* %209, i8 6)
	%210 = getelementptr [5 x i8]* @S.476
	%211 = bitcast [5 x i8]* %210 to [0 x i8]*
	call void @symb_NewIntrinsic([0 x i8]* %211, i8 7)
	%212 = getelementptr [7 x i8]* @S.477
	%213 = bitcast [7 x i8]* %212 to [0 x i8]*
	call void @symb_NewIntrinsic([0 x i8]* %213, i8 8)
	%214 = getelementptr [5 x i8]* @S.478
	%215 = bitcast [5 x i8]* %214 to [0 x i8]*
	call void @symb_NewIntrinsic([0 x i8]* %215, i8 9)
	%216 = getelementptr [5 x i8]* @S.479
	%217 = bitcast [5 x i8]* %216 to [0 x i8]*
	call void @symb_NewIntrinsic([0 x i8]* %217, i8 10)
	%218 = getelementptr [5 x i8]* @S.480
	%219 = bitcast [5 x i8]* %218 to [0 x i8]*
	call void @symb_NewIntrinsic([0 x i8]* %219, i8 11)
	%220 = getelementptr [8 x i8]* @S.481
	%221 = bitcast [8 x i8]* %220 to [0 x i8]*
	call void @symb_NewIntrinsic([0 x i8]* %221, i8 12)
	%222 = getelementptr [6 x i8]* @S.482
	%223 = bitcast [6 x i8]* %222 to [0 x i8]*
	call void @symb_NewIntrinsic([0 x i8]* %223, i8 13)
	%224 = getelementptr [6 x i8]* @S.483
	%225 = bitcast [6 x i8]* %224 to [0 x i8]*
	call void @symb_NewIntrinsic([0 x i8]* %225, i8 14)
	%226 = getelementptr [9 x i8]* @S.484
	%227 = bitcast [9 x i8]* %226 to [0 x i8]*
	%228 = load %type.TypeNode** %taddr
	%229 = call %symb.SymbNode* @symb_NewLibrary([0 x i8]* %227, %type.TypeNode* %228)
	store %symb.SymbNode* %229, %symb.SymbNode** @symb_libnew
	%230 = load %symb.SymbNode** @symb_libnew
	%231 = load %type.TypeNode** @type_wordtype
	call void @symb_AddLibFormal(%symb.SymbNode* %230, %type.TypeNode* %231)
	%232 = load %symb.SymbNode** @symb_libnew
	%233 = load %type.TypeNode** @type_wordtype
	call void @symb_AddLibFormal(%symb.SymbNode* %232, %type.TypeNode* %233)
	%234 = load %symb.SymbNode** @symb_libnew
	%235 = load %type.TypeNode** @type_wordtype
	call void @symb_AddLibFormal(%symb.SymbNode* %234, %type.TypeNode* %235)
	%236 = getelementptr [8 x i8]* @S.485
	%237 = bitcast [8 x i8]* %236 to [0 x i8]*
	%238 = call %symb.SymbNode* @symb_NewLibrary([0 x i8]* %237, %type.TypeNode* null)
	store %symb.SymbNode* %238, %symb.SymbNode** @symb_libdel
	%239 = load %symb.SymbNode** @symb_libdel
	%240 = load %type.TypeNode** %taddr
	call void @symb_AddLibFormal(%symb.SymbNode* %239, %type.TypeNode* %240)
	%241 = load %symb.SymbNode** @symb_libdel
	%242 = load %type.TypeNode** @type_wordtype
	call void @symb_AddLibFormal(%symb.SymbNode* %241, %type.TypeNode* %242)
	%243 = load %symb.SymbNode** @symb_libdel
	%244 = load %type.TypeNode** @type_wordtype
	call void @symb_AddLibFormal(%symb.SymbNode* %243, %type.TypeNode* %244)
	br label %return
return:
	ret void
}
define internal void @symb_Init() nounwind {
L.0:
	store i8 0, i8* @symb_level
	%0 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 0
	%1 = getelementptr %symb.symblist* %0, i32 0, i32 0
	store %symb.SymbNode* null, %symb.SymbNode** %1
	%2 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 0
	%3 = getelementptr %symb.symblist* %2, i32 0, i32 1
	store %symb.SymbNode* null, %symb.SymbNode** %3
	call void @symb_InitDecl()
	br label %return
return:
	ret void
}
define internal void @symb_DumpST(%symb.SymbNode* %s$, i8 zeroext %full$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	%full = alloca i8
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store i8 %full$, i8* %full
	%0 = load %symb.SymbNode** %s
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 22
	%2 = getelementptr [0 x i8]* %1
	%3 = bitcast [0 x i8]* %2 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %3)
	call void @sys_fildes_chr(i32 2, i8 58)
	%4 = load %symb.SymbNode** %s
	%5 = getelementptr %symb.SymbNode* %4, i32 0, i32 1
	%6 = load %type.TypeNode** %5
	%7 = load i8* %full
	call void @type_DumpT(%type.TypeNode* %6, i8 %7)
	br label %return
return:
	ret void
}
@S.486 = internal constant [3 x i8] c", \00"
define internal void @symb_DumpFormals(%symb.SymbNode* %ss$) nounwind {
L.0:
	%ss = alloca %symb.SymbNode*
	store %symb.SymbNode* %ss$, %symb.SymbNode** %ss
	call void @sys_fildes_chr(i32 2, i8 40)
	%0 = load %symb.SymbNode** %ss
	%1 = icmp ne %symb.SymbNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	br label %L.3
L.3:
	%2 = load %symb.SymbNode** %ss
	call void @symb_DumpST(%symb.SymbNode* %2, i8 0)
	%3 = load %symb.SymbNode** %ss
	%4 = getelementptr %symb.SymbNode* %3, i32 0, i32 0
	%5 = load %symb.SymbNode** %4
	%6 = bitcast %symb.SymbNode* %5 to %symb.SymbNode*
	store %symb.SymbNode* %6, %symb.SymbNode** %ss
	%7 = load %symb.SymbNode** %ss
	%8 = icmp eq %symb.SymbNode* %7, null
	br i1 %8, label %L.4, label %L.5
L.5:
	%9 = getelementptr [3 x i8]* @S.486
	%10 = bitcast [3 x i8]* %9 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %10)
	br label %L.3
L.4:
	br label %L.1
L.1:
	call void @sys_fildes_chr(i32 2, i8 41)
	br label %return
return:
	ret void
}
@S.487 = internal constant [9 x i8] c": global\00"
@S.488 = internal constant [11 x i8] c": external\00"
@S.489 = internal constant [9 x i8] c": fixed(\00"
@S.490 = internal constant [3 x i8] c"(\22\00"
@S.491 = internal constant [3 x i8] c"\22)\00"
define internal void @symb_DumpLinkage(%symb.SymbNode* %s$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%0 = load %symb.SymbNode** %s
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 14
	%2 = load i8* %1
	%3 = zext i8 %2 to i32
	switch i32 %3, label %L.1 [
		i32 3, label %L.3
		i32 5, label %L.4
		i32 6, label %L.5
	]
L.3:
	%4 = getelementptr [9 x i8]* @S.487
	%5 = bitcast [9 x i8]* %4 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %5)
	br label %L.2
L.4:
	%6 = getelementptr [11 x i8]* @S.488
	%7 = bitcast [11 x i8]* %6 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %7)
	br label %L.2
L.5:
	%8 = getelementptr [9 x i8]* @S.489
	%9 = bitcast [9 x i8]* %8 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %9)
	%10 = load %symb.SymbNode** %s
	%11 = getelementptr %symb.SymbNode* %10, i32 0, i32 9
	%12 = load i64* %11
	call void @sys_fildes_hex64(i32 2, i64 %12)
	call void @sys_fildes_chr(i32 2, i8 41)
	br label %return
L.1:
	br label %L.2
L.2:
	%13 = load %symb.SymbNode** %s
	%14 = getelementptr %symb.SymbNode* %13, i32 0, i32 6
	%15 = load %symb.SymbNode** %14
	%16 = icmp ne %symb.SymbNode* %15, null
	br i1 %16, label %L.7, label %L.6
L.7:
	%17 = getelementptr [3 x i8]* @S.490
	%18 = bitcast [3 x i8]* %17 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %18)
	%19 = load %symb.SymbNode** %s
	%20 = getelementptr %symb.SymbNode* %19, i32 0, i32 6
	%21 = load %symb.SymbNode** %20
	%22 = getelementptr %symb.SymbNode* %21, i32 0, i32 22
	%23 = getelementptr [0 x i8]* %22
	%24 = bitcast [0 x i8]* %23 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %24)
	%25 = getelementptr [3 x i8]* @S.491
	%26 = bitcast [3 x i8]* %25 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %26)
	br label %L.6
L.6:
	br label %return
return:
	ret void
}
@S.492 = internal constant [10 x i8] c"constant \00"
@S.493 = internal constant [6 x i8] c"type \00"
@S.494 = internal constant [5 x i8] c"var \00"
@S.495 = internal constant [7 x i8] c"field \00"
@S.496 = internal constant [6 x i8] c"proc \00"
@S.497 = internal constant [11 x i8] c"intrinsic \00"
@S.498 = internal constant [3 x i8] c"()\00"
@S.499 = internal constant [9 x i8] c"package \00"
@S.500 = internal constant [7 x i8] c"alias \00"
@S.501 = internal constant [5 x i8] c" to \00"
@S.502 = internal constant [8 x i8] c"string \00"
@S.503 = internal constant [11 x i8] c"undefined \00"
@S.504 = internal constant [11 x i8] c" (forward)\00"
define internal void @symb_DumpS(%symb.SymbNode* %s$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%tl = alloca %type.TypeListEntry*
	%0 = load %symb.SymbNode** %s
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 13
	%2 = load i8* %1
	%3 = zext i8 %2 to i32
	switch i32 %3, label %L.1 [
		i32 1, label %L.3
		i32 2, label %L.4
		i32 3, label %L.5
		i32 4, label %L.6
		i32 5, label %L.7
		i32 6, label %L.8
		i32 8, label %L.9
		i32 9, label %L.10
	]
L.3:
	%4 = getelementptr [10 x i8]* @S.492
	%5 = bitcast [10 x i8]* %4 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %5)
	%6 = load %symb.SymbNode** %s
	call void @symb_DumpST(%symb.SymbNode* %6, i8 0)
	%7 = load %symb.SymbNode** %s
	%8 = getelementptr %symb.SymbNode* %7, i32 0, i32 1
	%9 = load %type.TypeNode** %8
	%10 = icmp ne %type.TypeNode* %9, null
	br i1 %10, label %L.13, label %L.14
L.13:
	%11 = load %symb.SymbNode** %s
	%12 = getelementptr %symb.SymbNode* %11, i32 0, i32 1
	%13 = load %type.TypeNode** %12
	%14 = getelementptr %type.TypeNode* %13, i32 0, i32 14
	%15 = load i8* %14
	%16 = icmp ule i8 %15, 5
	br label %L.14
L.14:
	%17 = phi i1 [ false, %L.3 ], [ %16, %L.13 ]
	br i1 %17, label %L.11, label %L.12
L.11:
	%18 = load %symb.SymbNode** %s
	%19 = getelementptr %symb.SymbNode* %18, i32 0, i32 8
	%20 = load %ast.AstNode** %19
	%21 = icmp ne %ast.AstNode* %20, null
	br label %L.12
L.12:
	%22 = phi i1 [ false, %L.14 ], [ %21, %L.11 ]
	br i1 %22, label %L.16, label %L.15
L.16:
	call void @sys_fildes_chr(i32 2, i8 61)
	%23 = load %symb.SymbNode** %s
	%24 = getelementptr %symb.SymbNode* %23, i32 0, i32 8
	%25 = load %ast.AstNode** %24
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 10
	%27 = load i64* %26
	call void @sys_fildes_hex64(i32 2, i64 %27)
	br label %L.15
L.15:
	br label %L.2
L.4:
	%28 = getelementptr [6 x i8]* @S.493
	%29 = bitcast [6 x i8]* %28 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %29)
	%30 = load %symb.SymbNode** %s
	call void @symb_DumpST(%symb.SymbNode* %30, i8 1)
	br label %L.2
L.5:
	%31 = getelementptr [5 x i8]* @S.494
	%32 = bitcast [5 x i8]* %31 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %32)
	%33 = load %symb.SymbNode** %s
	call void @symb_DumpST(%symb.SymbNode* %33, i8 0)
	%34 = load %symb.SymbNode** %s
	call void @symb_DumpLinkage(%symb.SymbNode* %34)
	br label %L.2
L.6:
	%35 = getelementptr [7 x i8]* @S.495
	%36 = bitcast [7 x i8]* %35 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %36)
	%37 = load %symb.SymbNode** %s
	%38 = getelementptr %symb.SymbNode* %37, i32 0, i32 22
	%39 = getelementptr [0 x i8]* %38
	%40 = bitcast [0 x i8]* %39 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %40)
	br label %L.2
L.7:
	%41 = load %symb.SymbNode** %s
	%42 = getelementptr %symb.SymbNode* %41, i32 0, i32 10
	%43 = load i16* %42
	%44 = icmp eq i16 %43, 0
	br i1 %44, label %L.18, label %L.19
L.18:
	%45 = getelementptr [6 x i8]* @S.496
	%46 = bitcast [6 x i8]* %45 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %46)
	%47 = load %symb.SymbNode** %s
	%48 = getelementptr %symb.SymbNode* %47, i32 0, i32 22
	%49 = getelementptr [0 x i8]* %48
	%50 = bitcast [0 x i8]* %49 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %50)
	%51 = load %symb.SymbNode** %s
	%52 = getelementptr %symb.SymbNode* %51, i32 0, i32 3
	%53 = load %symb.SymbNode** %52
	%54 = bitcast %symb.SymbNode* %53 to %symb.SymbNode*
	call void @symb_DumpFormals(%symb.SymbNode* %54)
	%55 = load %symb.SymbNode** %s
	%56 = getelementptr %symb.SymbNode* %55, i32 0, i32 4
	%57 = load %type.TypeListEntry** %56
	store %type.TypeListEntry* %57, %type.TypeListEntry** %tl
	%58 = load %type.TypeListEntry** %tl
	%59 = icmp ne %type.TypeListEntry* %58, null
	br i1 %59, label %L.21, label %L.20
L.21:
	call void @sys_fildes_chr(i32 2, i8 58)
	br label %L.22
L.22:
	%60 = load %type.TypeListEntry** %tl
	%61 = getelementptr %type.TypeListEntry* %60, i32 0, i32 1
	%62 = load %type.TypeNode** %61
	%63 = bitcast %type.TypeNode* %62 to %type.TypeNode*
	call void @type_DumpT(%type.TypeNode* %63, i8 0)
	%64 = load %type.TypeListEntry** %tl
	%65 = getelementptr %type.TypeListEntry* %64, i32 0, i32 0
	%66 = load %type.TypeListEntry** %65
	%67 = bitcast %type.TypeListEntry* %66 to %type.TypeListEntry*
	store %type.TypeListEntry* %67, %type.TypeListEntry** %tl
	%68 = load %type.TypeListEntry** %tl
	%69 = icmp eq %type.TypeListEntry* %68, null
	br i1 %69, label %L.23, label %L.24
L.24:
	call void @sys_fildes_chr(i32 2, i8 44)
	br label %L.22
L.23:
	br label %L.20
L.20:
	br label %L.17
L.19:
	%70 = getelementptr [11 x i8]* @S.497
	%71 = bitcast [11 x i8]* %70 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %71)
	%72 = load %symb.SymbNode** %s
	%73 = getelementptr %symb.SymbNode* %72, i32 0, i32 22
	%74 = getelementptr [0 x i8]* %73
	%75 = bitcast [0 x i8]* %74 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %75)
	%76 = getelementptr [3 x i8]* @S.498
	%77 = bitcast [3 x i8]* %76 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %77)
	br label %L.17
L.17:
	%78 = load %symb.SymbNode** %s
	call void @symb_DumpLinkage(%symb.SymbNode* %78)
	br label %L.2
L.8:
	%79 = getelementptr [9 x i8]* @S.499
	%80 = bitcast [9 x i8]* %79 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %80)
	%81 = load %symb.SymbNode** %s
	%82 = getelementptr %symb.SymbNode* %81, i32 0, i32 22
	%83 = getelementptr [0 x i8]* %82
	%84 = bitcast [0 x i8]* %83 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %84)
	br label %L.2
L.9:
	%85 = getelementptr [7 x i8]* @S.500
	%86 = bitcast [7 x i8]* %85 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %86)
	%87 = load %symb.SymbNode** %s
	%88 = getelementptr %symb.SymbNode* %87, i32 0, i32 22
	%89 = getelementptr [0 x i8]* %88
	%90 = bitcast [0 x i8]* %89 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %90)
	%91 = getelementptr [5 x i8]* @S.501
	%92 = bitcast [5 x i8]* %91 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %92)
	%93 = load %symb.SymbNode** %s
	%94 = getelementptr %symb.SymbNode* %93, i32 0, i32 5
	%95 = load %symb.SymbNode** %94
	%96 = getelementptr %symb.SymbNode* %95, i32 0, i32 22
	%97 = getelementptr [0 x i8]* %96
	%98 = bitcast [0 x i8]* %97 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %98)
	br label %L.2
L.10:
	%99 = getelementptr [8 x i8]* @S.502
	%100 = bitcast [8 x i8]* %99 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %100)
	%101 = load %symb.SymbNode** %s
	%102 = getelementptr %symb.SymbNode* %101, i32 0, i32 22
	%103 = getelementptr [0 x i8]* %102
	%104 = bitcast [0 x i8]* %103 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %104)
	br label %L.2
L.1:
	%105 = getelementptr [11 x i8]* @S.503
	%106 = bitcast [11 x i8]* %105 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %106)
	%107 = load %symb.SymbNode** %s
	%108 = getelementptr %symb.SymbNode* %107, i32 0, i32 22
	%109 = getelementptr [0 x i8]* %108
	%110 = bitcast [0 x i8]* %109 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %110)
	br label %L.2
L.2:
	%111 = load %symb.SymbNode** %s
	%112 = getelementptr %symb.SymbNode* %111, i32 0, i32 15
	%113 = load i8* %112
	%114 = icmp ne i8 %113, 0
	br i1 %114, label %L.26, label %L.25
L.26:
	%115 = getelementptr [11 x i8]* @S.504
	%116 = bitcast [11 x i8]* %115 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %116)
	br label %L.25
L.25:
	call void @sys_fildes_nl(i32 2)
	br label %return
return:
	ret void
}
@S.505 = internal constant [11 x i8] c"*** level \00"
@S.506 = internal constant [10 x i8] c" package \00"
@S.507 = internal constant [6 x i8] c" ***\0A\00"
define internal void @symb_Dump(i8 zeroext %n$) nounwind {
L.0:
	%n = alloca i8
	store i8 %n$, i8* %n
	%stop = alloca i32
	%i = alloca i32
	%s = alloca %symb.SymbNode*
	%0 = load i8* @symb_level
	%1 = load i8* %n
	%2 = icmp ult i8 %0, %1
	br i1 %2, label %L.2, label %L.3
L.2:
	store i32 0, i32* %stop
	br label %L.1
L.3:
	%3 = load i8* @symb_level
	%4 = zext i8 %3 to i32
	%5 = add i32 %4, 1
	%6 = load i8* %n
	%7 = zext i8 %6 to i32
	%8 = sub i32 %5, %7
	store i32 %8, i32* %stop
	br label %L.1
L.1:
	%9 = load i8* @symb_level
	%10 = zext i8 %9 to i32
	store i32 %10, i32* %i
	br label %L.4
L.4:
	%11 = getelementptr [11 x i8]* @S.505
	%12 = bitcast [11 x i8]* %11 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %12)
	%13 = load i32* %i
	call void @sys_fildes_uint(i32 2, i32 %13)
	%14 = load i32* %i
	%15 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %14
	%16 = getelementptr %symb.symblist* %15, i32 0, i32 2
	%17 = load %symb.SymbNode** %16
	%18 = icmp ne %symb.SymbNode* %17, null
	br i1 %18, label %L.7, label %L.6
L.7:
	%19 = getelementptr [10 x i8]* @S.506
	%20 = bitcast [10 x i8]* %19 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %20)
	%21 = load i32* %i
	%22 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %21
	%23 = getelementptr %symb.symblist* %22, i32 0, i32 2
	%24 = load %symb.SymbNode** %23
	%25 = getelementptr %symb.SymbNode* %24, i32 0, i32 22
	%26 = getelementptr [0 x i8]* %25
	%27 = bitcast [0 x i8]* %26 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %27)
	br label %L.6
L.6:
	%28 = getelementptr [6 x i8]* @S.507
	%29 = bitcast [6 x i8]* %28 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %29)
	%30 = load i32* %i
	%31 = getelementptr [32 x %symb.symblist]* @symb_symbs, i32 0, i32 %30
	%32 = getelementptr %symb.symblist* %31, i32 0, i32 0
	%33 = load %symb.SymbNode** %32
	store %symb.SymbNode* %33, %symb.SymbNode** %s
	br label %L.8
L.8:
	%34 = load %symb.SymbNode** %s
	%35 = icmp ne %symb.SymbNode* %34, null
	%36 = xor i1 %35, true
	br i1 %36, label %L.9, label %L.10
L.10:
	%37 = load %symb.SymbNode** %s
	call void @symb_DumpS(%symb.SymbNode* %37)
	%38 = load %symb.SymbNode** %s
	%39 = getelementptr %symb.SymbNode* %38, i32 0, i32 0
	%40 = load %symb.SymbNode** %39
	%41 = bitcast %symb.SymbNode* %40 to %symb.SymbNode*
	store %symb.SymbNode* %41, %symb.SymbNode** %s
	br label %L.8
L.9:
	%42 = load i32* %i
	%43 = load i32* %stop
	%44 = icmp ule i32 %42, %43
	br i1 %44, label %L.5, label %L.11
L.11:
	%45 = load i32* %i
	%46 = sub i32 %45, 1
	store i32 %46, i32* %i
	br label %L.4
L.5:
	br label %return
return:
	ret void
}
%type.fwd = type {%type.fwd*, %symb.SymbNode*, %type.TypeNode*}
@type_fwdlist = internal global %type.fwd* zeroinitializer, align 4
define internal void @type_FwdAdd(%symb.SymbNode* %s$, %type.TypeNode* %t$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	%t = alloca %type.TypeNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%f = alloca %type.fwd*
	%0 = call [0 x i8]* @sys_zalloc(i32 12)
	%1 = bitcast [0 x i8]* %0 to %type.fwd*
	store %type.fwd* %1, %type.fwd** %f
	%2 = load %symb.SymbNode** %s
	%3 = load %type.fwd** %f
	%4 = getelementptr %type.fwd* %3, i32 0, i32 1
	store %symb.SymbNode* %2, %symb.SymbNode** %4
	%5 = load %type.TypeNode** %t
	%6 = load %type.fwd** %f
	%7 = getelementptr %type.fwd* %6, i32 0, i32 2
	store %type.TypeNode* %5, %type.TypeNode** %7
	%8 = load %type.fwd** @type_fwdlist
	%9 = bitcast %type.fwd* %8 to %type.fwd*
	%10 = load %type.fwd** %f
	%11 = getelementptr %type.fwd* %10, i32 0, i32 0
	store %type.fwd* %9, %type.fwd** %11
	%12 = load %type.fwd** %f
	store %type.fwd* %12, %type.fwd** @type_fwdlist
	%13 = load %symb.SymbNode** %s
	%14 = getelementptr %symb.SymbNode* %13, i32 0, i32 15
	store i8 1, i8* %14
	br label %return
return:
	ret void
}
define internal void @type_FwdFix(%symb.SymbNode* %s$, %type.TypeNode* %bt$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	%bt = alloca %type.TypeNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store %type.TypeNode* %bt$, %type.TypeNode** %bt
	%f = alloca %type.fwd*
	%fn = alloca %type.fwd*
	%fp = alloca %type.fwd*
	store %type.fwd* null, %type.fwd** %fp
	%0 = load %type.fwd** @type_fwdlist
	store %type.fwd* %0, %type.fwd** %f
	br label %L.1
L.1:
	%1 = load %type.fwd** %f
	%2 = icmp ne %type.fwd* %1, null
	%3 = xor i1 %2, true
	br i1 %3, label %L.2, label %L.3
L.3:
	%4 = load %type.fwd** %f
	%5 = getelementptr %type.fwd* %4, i32 0, i32 0
	%6 = load %type.fwd** %5
	%7 = bitcast %type.fwd* %6 to %type.fwd*
	store %type.fwd* %7, %type.fwd** %fn
	%8 = load %symb.SymbNode** %s
	%9 = load %type.fwd** %f
	%10 = getelementptr %type.fwd* %9, i32 0, i32 1
	%11 = load %symb.SymbNode** %10
	%12 = icmp eq %symb.SymbNode* %8, %11
	br i1 %12, label %L.5, label %L.6
L.5:
	%13 = load %type.TypeNode** %bt
	%14 = bitcast %type.TypeNode* %13 to %type.TypeNode*
	%15 = load %type.fwd** %f
	%16 = getelementptr %type.fwd* %15, i32 0, i32 2
	%17 = load %type.TypeNode** %16
	%18 = getelementptr %type.TypeNode* %17, i32 0, i32 0
	store %type.TypeNode* %14, %type.TypeNode** %18
	%19 = load %type.fwd** %fp
	%20 = icmp ne %type.fwd* %19, null
	br i1 %20, label %L.8, label %L.9
L.8:
	%21 = load %type.fwd** %fn
	%22 = bitcast %type.fwd* %21 to %type.fwd*
	%23 = load %type.fwd** %fp
	%24 = getelementptr %type.fwd* %23, i32 0, i32 0
	store %type.fwd* %22, %type.fwd** %24
	br label %L.7
L.9:
	%25 = load %type.fwd** %fn
	store %type.fwd* %25, %type.fwd** @type_fwdlist
	br label %L.7
L.7:
	br label %L.4
L.6:
	%26 = load %type.fwd** %f
	store %type.fwd* %26, %type.fwd** %fp
	br label %L.4
L.4:
	%27 = load %type.fwd** %fn
	store %type.fwd* %27, %type.fwd** %f
	br label %L.1
L.2:
	%28 = load %symb.SymbNode** %s
	%29 = getelementptr %symb.SymbNode* %28, i32 0, i32 15
	store i8 0, i8* %29
	br label %return
return:
	ret void
}
define internal void @type_PPkgPfx(i32 %f$, %symb.SymbNode* %s$) nounwind {
L.0:
	%f = alloca i32
	%s = alloca %symb.SymbNode*
	store i32 %f$, i32* %f
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%0 = load %symb.SymbNode** %s
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 2
	%2 = load %symb.SymbNode** %1
	%3 = icmp ne %symb.SymbNode* %2, null
	br i1 %3, label %L.2, label %L.1
L.2:
	%4 = load i32* %f
	%5 = load %symb.SymbNode** %s
	%6 = getelementptr %symb.SymbNode* %5, i32 0, i32 2
	%7 = load %symb.SymbNode** %6
	%8 = bitcast %symb.SymbNode* %7 to %symb.SymbNode*
	call void @type_PPkgPfx(i32 %4, %symb.SymbNode* %8)
	br label %L.1
L.1:
	%9 = load i32* %f
	%10 = load %symb.SymbNode** %s
	%11 = getelementptr %symb.SymbNode* %10, i32 0, i32 22
	%12 = getelementptr [0 x i8]* %11
	%13 = bitcast [0 x i8]* %12 to [0 x i8]*
	call void @sys_fildes_str(i32 %9, [0 x i8]* %13)
	%14 = load i32* %f
	call void @sys_fildes_chr(i32 %14, i8 46)
	br label %return
return:
	ret void
}
define internal void @type_PName(i32 %f$, %symb.SymbNode* %s$) nounwind {
L.0:
	%f = alloca i32
	%s = alloca %symb.SymbNode*
	store i32 %f$, i32* %f
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%0 = load %symb.SymbNode** %s
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 2
	%2 = load %symb.SymbNode** %1
	%3 = icmp ne %symb.SymbNode* %2, null
	br i1 %3, label %L.2, label %L.1
L.2:
	%4 = load i32* %f
	%5 = load %symb.SymbNode** %s
	%6 = getelementptr %symb.SymbNode* %5, i32 0, i32 2
	%7 = load %symb.SymbNode** %6
	%8 = bitcast %symb.SymbNode* %7 to %symb.SymbNode*
	call void @type_PPkgPfx(i32 %4, %symb.SymbNode* %8)
	br label %L.1
L.1:
	%9 = load i32* %f
	%10 = load %symb.SymbNode** %s
	%11 = getelementptr %symb.SymbNode* %10, i32 0, i32 22
	%12 = getelementptr [0 x i8]* %11
	%13 = bitcast [0 x i8]* %12 to [0 x i8]*
	call void @sys_fildes_str(i32 %9, [0 x i8]* %13)
	br label %return
return:
	ret void
}
define internal zeroext i8 @type_FwdCheck() nounwind {
L.0:
	%rv.0 = alloca i8
	%f = alloca %type.fwd*
	%0 = load %type.fwd** @type_fwdlist
	store %type.fwd* %0, %type.fwd** %f
	br label %L.1
L.1:
	%1 = load %type.fwd** %f
	%2 = icmp ne %type.fwd* %1, null
	%3 = xor i1 %2, true
	br i1 %3, label %L.2, label %L.3
L.3:
	call void @lex_ErrorSub(i8 76)
	%4 = load %type.fwd** %f
	%5 = getelementptr %type.fwd* %4, i32 0, i32 1
	%6 = load %symb.SymbNode** %5
	call void @type_PName(i32 2, %symb.SymbNode* %6)
	call void @sys_fildes_nl(i32 2)
	%7 = load %type.fwd** %f
	%8 = getelementptr %type.fwd* %7, i32 0, i32 0
	%9 = load %type.fwd** %8
	%10 = bitcast %type.fwd* %9 to %type.fwd*
	store %type.fwd* %10, %type.fwd** %f
	br label %L.1
L.2:
	br label %return
return:
	%11 = load i8* %rv.0
	ret i8 %11
}
define internal zeroext i8 @type_SameTypeList(%type.TypeListEntry* %al$, %type.TypeListEntry* %bl$) nounwind {
L.0:
	%rv.0 = alloca i8
	%al = alloca %type.TypeListEntry*
	%bl = alloca %type.TypeListEntry*
	store %type.TypeListEntry* %al$, %type.TypeListEntry** %al
	store %type.TypeListEntry* %bl$, %type.TypeListEntry** %bl
	br label %L.1
L.1:
	%0 = load %type.TypeListEntry** %al
	%1 = icmp ne %type.TypeListEntry* %0, null
	br i1 %1, label %L.4, label %L.5
L.4:
	%2 = load %type.TypeListEntry** %bl
	%3 = icmp ne %type.TypeListEntry* %2, null
	br label %L.5
L.5:
	%4 = phi i1 [ false, %L.1 ], [ %3, %L.4 ]
	%5 = xor i1 %4, true
	br i1 %5, label %L.2, label %L.3
L.3:
	%6 = load %type.TypeListEntry** %al
	%7 = getelementptr %type.TypeListEntry* %6, i32 0, i32 1
	%8 = load %type.TypeNode** %7
	%9 = bitcast %type.TypeNode* %8 to %type.TypeNode*
	%10 = load %type.TypeListEntry** %bl
	%11 = getelementptr %type.TypeListEntry* %10, i32 0, i32 1
	%12 = load %type.TypeNode** %11
	%13 = bitcast %type.TypeNode* %12 to %type.TypeNode*
	%14 = call i8 @type_Compat(%type.TypeNode* %9, %type.TypeNode* %13)
	%15 = icmp ne i8 %14, 0
	%16 = xor i1 %15, true
	br i1 %16, label %L.7, label %L.6
L.7:
	store i8 0, i8* %rv.0
	br label %return
L.6:
	%17 = load %type.TypeListEntry** %al
	%18 = getelementptr %type.TypeListEntry* %17, i32 0, i32 0
	%19 = load %type.TypeListEntry** %18
	%20 = bitcast %type.TypeListEntry* %19 to %type.TypeListEntry*
	store %type.TypeListEntry* %20, %type.TypeListEntry** %al
	%21 = load %type.TypeListEntry** %bl
	%22 = getelementptr %type.TypeListEntry* %21, i32 0, i32 0
	%23 = load %type.TypeListEntry** %22
	%24 = bitcast %type.TypeListEntry* %23 to %type.TypeListEntry*
	store %type.TypeListEntry* %24, %type.TypeListEntry** %bl
	br label %L.1
L.2:
	%25 = load %type.TypeListEntry** %al
	%26 = icmp eq %type.TypeListEntry* %25, null
	br i1 %26, label %L.8, label %L.9
L.8:
	%27 = load %type.TypeListEntry** %bl
	%28 = icmp eq %type.TypeListEntry* %27, null
	br label %L.9
L.9:
	%29 = phi i1 [ false, %L.2 ], [ %28, %L.8 ]
	%30 = zext i1 %29 to i8
	store i8 %30, i8* %rv.0
	br label %return
return:
	%31 = load i8* %rv.0
	ret i8 %31
}
define internal zeroext i8 @type_SameSymbList(%symb.SymbNode* %as$, %symb.SymbNode* %bs$) nounwind {
L.0:
	%rv.0 = alloca i8
	%as = alloca %symb.SymbNode*
	%bs = alloca %symb.SymbNode*
	store %symb.SymbNode* %as$, %symb.SymbNode** %as
	store %symb.SymbNode* %bs$, %symb.SymbNode** %bs
	br label %L.1
L.1:
	%0 = load %symb.SymbNode** %as
	%1 = icmp ne %symb.SymbNode* %0, null
	br i1 %1, label %L.4, label %L.5
L.4:
	%2 = load %symb.SymbNode** %bs
	%3 = icmp ne %symb.SymbNode* %2, null
	br label %L.5
L.5:
	%4 = phi i1 [ false, %L.1 ], [ %3, %L.4 ]
	%5 = xor i1 %4, true
	br i1 %5, label %L.2, label %L.3
L.3:
	%6 = load %symb.SymbNode** %as
	%7 = getelementptr %symb.SymbNode* %6, i32 0, i32 1
	%8 = load %type.TypeNode** %7
	%9 = load %symb.SymbNode** %bs
	%10 = getelementptr %symb.SymbNode* %9, i32 0, i32 1
	%11 = load %type.TypeNode** %10
	%12 = call i8 @type_Compat(%type.TypeNode* %8, %type.TypeNode* %11)
	%13 = icmp ne i8 %12, 0
	%14 = xor i1 %13, true
	br i1 %14, label %L.7, label %L.6
L.7:
	store i8 0, i8* %rv.0
	br label %return
L.6:
	%15 = load %symb.SymbNode** %as
	%16 = getelementptr %symb.SymbNode* %15, i32 0, i32 0
	%17 = load %symb.SymbNode** %16
	%18 = bitcast %symb.SymbNode* %17 to %symb.SymbNode*
	store %symb.SymbNode* %18, %symb.SymbNode** %as
	%19 = load %symb.SymbNode** %bs
	%20 = getelementptr %symb.SymbNode* %19, i32 0, i32 0
	%21 = load %symb.SymbNode** %20
	%22 = bitcast %symb.SymbNode* %21 to %symb.SymbNode*
	store %symb.SymbNode* %22, %symb.SymbNode** %bs
	br label %L.1
L.2:
	%23 = load %symb.SymbNode** %as
	%24 = icmp eq %symb.SymbNode* %23, null
	br i1 %24, label %L.8, label %L.9
L.8:
	%25 = load %symb.SymbNode** %bs
	%26 = icmp eq %symb.SymbNode* %25, null
	br label %L.9
L.9:
	%27 = phi i1 [ false, %L.2 ], [ %26, %L.8 ]
	%28 = zext i1 %27 to i8
	store i8 %28, i8* %rv.0
	br label %return
return:
	%29 = load i8* %rv.0
	ret i8 %29
}
@S.509 = internal constant [7 x i8] c"UKNOWN\00"
@S.510 = internal constant [5 x i8] c"ENUM\00"
@S.511 = internal constant [5 x i8] c"UINT\00"
@S.512 = internal constant [5 x i8] c"SINT\00"
@S.513 = internal constant [4 x i8] c"REF\00"
@S.514 = internal constant [6 x i8] c"ARRAY\00"
@S.515 = internal constant [7 x i8] c"RECORD\00"
@S.516 = internal constant [8 x i8] c"REFPROC\00"
@type_KindName = internal constant [9 x [0 x i8]*] [ [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.509 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.510 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.511 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.512 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.513 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.514 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.515 )  to [0 x i8]* ), [0 x i8]* bitcast( [8 x i8]* getelementptr( [8 x i8]* @S.516 )  to [0 x i8]* ), [0 x i8]* null ], align 4
define internal zeroext i8 @type_Compat(%type.TypeNode* %t1$, %type.TypeNode* %t2$) nounwind {
L.0:
	%rv.0 = alloca i8
	%t1 = alloca %type.TypeNode*
	%t2 = alloca %type.TypeNode*
	store %type.TypeNode* %t1$, %type.TypeNode** %t1
	store %type.TypeNode* %t2$, %type.TypeNode** %t2
	%0 = load %type.TypeNode** %t1
	%1 = icmp eq %type.TypeNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.1:
	%2 = load %type.TypeNode** %t2
	%3 = icmp eq %type.TypeNode* %2, null
	br label %L.2
L.2:
	%4 = phi i1 [ true, %L.0 ], [ %3, %L.1 ]
	br i1 %4, label %L.4, label %L.3
L.4:
	store i8 1, i8* %rv.0
	br label %return
L.3:
	%5 = load %type.TypeNode** %t1
	%6 = load %type.TypeNode** %t2
	%7 = icmp eq %type.TypeNode* %5, %6
	br i1 %7, label %L.6, label %L.5
L.6:
	store i8 1, i8* %rv.0
	br label %return
L.5:
	%8 = load %type.TypeNode** %t1
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 14
	%10 = load i8* %9
	%11 = load %type.TypeNode** %t2
	%12 = getelementptr %type.TypeNode* %11, i32 0, i32 14
	%13 = load i8* %12
	%14 = icmp ne i8 %10, %13
	br i1 %14, label %L.8, label %L.7
L.8:
	store i8 0, i8* %rv.0
	br label %return
L.7:
	%15 = load %type.TypeNode** %t1
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 1
	%17 = load %type.TypeNode** %16
	%18 = icmp ne %type.TypeNode* %17, null
	br i1 %18, label %L.10, label %L.9
L.10:
	%19 = load %type.TypeNode** %t1
	%20 = getelementptr %type.TypeNode* %19, i32 0, i32 1
	%21 = load %type.TypeNode** %20
	%22 = bitcast %type.TypeNode* %21 to %type.TypeNode*
	%23 = load %type.TypeNode** %t2
	%24 = call i8 @type_Compat(%type.TypeNode* %22, %type.TypeNode* %23)
	store i8 %24, i8* %rv.0
	br label %return
L.9:
	%25 = load %type.TypeNode** %t2
	%26 = getelementptr %type.TypeNode* %25, i32 0, i32 1
	%27 = load %type.TypeNode** %26
	%28 = icmp ne %type.TypeNode* %27, null
	br i1 %28, label %L.12, label %L.11
L.12:
	%29 = load %type.TypeNode** %t1
	%30 = load %type.TypeNode** %t2
	%31 = getelementptr %type.TypeNode* %30, i32 0, i32 1
	%32 = load %type.TypeNode** %31
	%33 = bitcast %type.TypeNode* %32 to %type.TypeNode*
	%34 = call i8 @type_Compat(%type.TypeNode* %29, %type.TypeNode* %33)
	store i8 %34, i8* %rv.0
	br label %return
L.11:
	%35 = load %type.TypeNode** %t2
	%36 = getelementptr %type.TypeNode* %35, i32 0, i32 14
	%37 = load i8* %36
	%38 = zext i8 %37 to i32
	switch i32 %38, label %L.13 [
		i32 2, label %L.15
		i32 3, label %L.15
		i32 1, label %L.16
		i32 7, label %L.17
		i32 5, label %L.18
		i32 6, label %L.19
		i32 8, label %L.20
	]
L.15:
	store i8 1, i8* %rv.0
	br label %return
L.16:
	%bt1 = alloca %type.TypeNode*
	%bt2 = alloca %type.TypeNode*
	%39 = load %type.TypeNode** %t1
	store %type.TypeNode* %39, %type.TypeNode** %bt1
	br label %L.21
L.21:
	%40 = load %type.TypeNode** %bt1
	%41 = getelementptr %type.TypeNode* %40, i32 0, i32 0
	%42 = load %type.TypeNode** %41
	%43 = icmp ne %type.TypeNode* %42, null
	%44 = xor i1 %43, true
	br i1 %44, label %L.22, label %L.23
L.23:
	%45 = load %type.TypeNode** %bt1
	%46 = getelementptr %type.TypeNode* %45, i32 0, i32 0
	%47 = load %type.TypeNode** %46
	%48 = bitcast %type.TypeNode* %47 to %type.TypeNode*
	store %type.TypeNode* %48, %type.TypeNode** %bt1
	br label %L.21
L.22:
	%49 = load %type.TypeNode** %t2
	store %type.TypeNode* %49, %type.TypeNode** %bt2
	br label %L.24
L.24:
	%50 = load %type.TypeNode** %bt2
	%51 = getelementptr %type.TypeNode* %50, i32 0, i32 0
	%52 = load %type.TypeNode** %51
	%53 = icmp ne %type.TypeNode* %52, null
	%54 = xor i1 %53, true
	br i1 %54, label %L.25, label %L.26
L.26:
	%55 = load %type.TypeNode** %bt2
	%56 = getelementptr %type.TypeNode* %55, i32 0, i32 0
	%57 = load %type.TypeNode** %56
	%58 = bitcast %type.TypeNode* %57 to %type.TypeNode*
	store %type.TypeNode* %58, %type.TypeNode** %bt2
	br label %L.24
L.25:
	%59 = load %type.TypeNode** %bt1
	%60 = load %type.TypeNode** %bt2
	%61 = icmp ne %type.TypeNode* %59, %60
	br i1 %61, label %L.28, label %L.27
L.28:
	store i8 0, i8* %rv.0
	br label %return
L.27:
	%62 = load %type.TypeNode** %t2
	%63 = getelementptr %type.TypeNode* %62, i32 0, i32 7
	%64 = load i64* %63
	%65 = load %type.TypeNode** %t1
	%66 = getelementptr %type.TypeNode* %65, i32 0, i32 7
	%67 = load i64* %66
	%68 = icmp ule i64 %64, %67
	br i1 %68, label %L.29, label %L.30
L.29:
	%69 = load %type.TypeNode** %t1
	%70 = getelementptr %type.TypeNode* %69, i32 0, i32 8
	%71 = load i64* %70
	%72 = load %type.TypeNode** %t2
	%73 = getelementptr %type.TypeNode* %72, i32 0, i32 8
	%74 = load i64* %73
	%75 = icmp ule i64 %71, %74
	br label %L.30
L.30:
	%76 = phi i1 [ false, %L.27 ], [ %75, %L.29 ]
	%77 = zext i1 %76 to i8
	store i8 %77, i8* %rv.0
	br label %return
L.17:
	%78 = load %type.TypeNode** %t2
	%79 = getelementptr %type.TypeNode* %78, i32 0, i32 0
	%80 = load %type.TypeNode** %79
	%81 = icmp ne %type.TypeNode* %80, null
	br i1 %81, label %L.32, label %L.31
L.32:
	%82 = load %type.TypeNode** %t1
	%83 = load %type.TypeNode** %t2
	%84 = getelementptr %type.TypeNode* %83, i32 0, i32 0
	%85 = load %type.TypeNode** %84
	%86 = bitcast %type.TypeNode* %85 to %type.TypeNode*
	%87 = call i8 @type_Compat(%type.TypeNode* %82, %type.TypeNode* %86)
	store i8 %87, i8* %rv.0
	br label %return
L.31:
	store i8 0, i8* %rv.0
	br label %return
L.18:
	%88 = load %type.TypeNode** %t1
	%89 = getelementptr %type.TypeNode* %88, i32 0, i32 0
	%90 = load %type.TypeNode** %89
	%91 = bitcast %type.TypeNode* %90 to %type.TypeNode*
	%92 = load %type.TypeNode** %t2
	%93 = getelementptr %type.TypeNode* %92, i32 0, i32 0
	%94 = load %type.TypeNode** %93
	%95 = bitcast %type.TypeNode* %94 to %type.TypeNode*
	%96 = call i8 @type_Compat(%type.TypeNode* %91, %type.TypeNode* %95)
	store i8 %96, i8* %rv.0
	br label %return
L.19:
	%97 = load %type.TypeNode** %t1
	%98 = getelementptr %type.TypeNode* %97, i32 0, i32 0
	%99 = load %type.TypeNode** %98
	%100 = bitcast %type.TypeNode* %99 to %type.TypeNode*
	%101 = load %type.TypeNode** %t2
	%102 = getelementptr %type.TypeNode* %101, i32 0, i32 0
	%103 = load %type.TypeNode** %102
	%104 = bitcast %type.TypeNode* %103 to %type.TypeNode*
	%105 = call i8 @type_Compat(%type.TypeNode* %100, %type.TypeNode* %104)
	store i8 %105, i8* %rv.0
	br label %return
L.20:
	%106 = load %type.TypeNode** %t1
	%107 = getelementptr %type.TypeNode* %106, i32 0, i32 4
	%108 = load %symb.SymbNode** %107
	%109 = getelementptr %symb.SymbNode* %108, i32 0, i32 3
	%110 = load %symb.SymbNode** %109
	%111 = bitcast %symb.SymbNode* %110 to %symb.SymbNode*
	%112 = load %type.TypeNode** %t2
	%113 = getelementptr %type.TypeNode* %112, i32 0, i32 4
	%114 = load %symb.SymbNode** %113
	%115 = getelementptr %symb.SymbNode* %114, i32 0, i32 3
	%116 = load %symb.SymbNode** %115
	%117 = bitcast %symb.SymbNode* %116 to %symb.SymbNode*
	%118 = call i8 @type_SameSymbList(%symb.SymbNode* %111, %symb.SymbNode* %117)
	%119 = icmp ne i8 %118, 0
	br i1 %119, label %L.33, label %L.34
L.33:
	%120 = load %type.TypeNode** %t1
	%121 = getelementptr %type.TypeNode* %120, i32 0, i32 4
	%122 = load %symb.SymbNode** %121
	%123 = getelementptr %symb.SymbNode* %122, i32 0, i32 4
	%124 = load %type.TypeListEntry** %123
	%125 = load %type.TypeNode** %t2
	%126 = getelementptr %type.TypeNode* %125, i32 0, i32 4
	%127 = load %symb.SymbNode** %126
	%128 = getelementptr %symb.SymbNode* %127, i32 0, i32 4
	%129 = load %type.TypeListEntry** %128
	%130 = call i8 @type_SameTypeList(%type.TypeListEntry* %124, %type.TypeListEntry* %129)
	%131 = icmp ne i8 %130, 0
	br label %L.34
L.34:
	%132 = phi i1 [ false, %L.20 ], [ %131, %L.33 ]
	%133 = zext i1 %132 to i8
	store i8 %133, i8* %rv.0
	br label %return
L.13:
	br label %L.14
L.14:
	store i8 0, i8* %rv.0
	br label %return
return:
	%134 = load i8* %rv.0
	ret i8 %134
}
define internal zeroext i8 @type_NeedSwap(%type.TypeNode* %t$, i8 zeroext %to$) nounwind {
L.0:
	%rv.0 = alloca i8
	%t = alloca %type.TypeNode*
	%to = alloca i8
	store %type.TypeNode* %t$, %type.TypeNode** %t
	store i8 %to$, i8* %to
	%fm = alloca i8
	%0 = load %type.TypeNode** %t
	%1 = getelementptr %type.TypeNode* %0, i32 0, i32 9
	%2 = load i32* %1
	%3 = load %target.ModelT** @target_Target
	%4 = getelementptr %target.ModelT* %3, i32 0, i32 2
	%5 = load i8* %4
	%6 = zext i8 %5 to i32
	%7 = icmp ule i32 %2, %6
	br i1 %7, label %L.2, label %L.1
L.2:
	store i8 0, i8* %rv.0
	br label %return
L.1:
	%8 = load %type.TypeNode** %t
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 16
	%10 = load i8* %9
	store i8 %10, i8* %fm
	%11 = load i8* %fm
	%12 = icmp eq i8 %11, 0
	br i1 %12, label %L.4, label %L.3
L.4:
	%13 = load %target.ModelT** @target_Target
	%14 = getelementptr %target.ModelT* %13, i32 0, i32 0
	%15 = load i8* %14
	store i8 %15, i8* %fm
	br label %L.3
L.3:
	%16 = load i8* %to
	%17 = icmp eq i8 %16, 0
	br i1 %17, label %L.6, label %L.5
L.6:
	%18 = load %target.ModelT** @target_Target
	%19 = getelementptr %target.ModelT* %18, i32 0, i32 0
	%20 = load i8* %19
	store i8 %20, i8* %to
	br label %L.5
L.5:
	%21 = load i8* %fm
	%22 = load i8* %to
	%23 = icmp ne i8 %21, %22
	%24 = zext i1 %23 to i8
	store i8 %24, i8* %rv.0
	br label %return
return:
	%25 = load i8* %rv.0
	ret i8 %25
}
define internal %type.TypeNode* @type_New(i8 zeroext %kind$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%kind = alloca i8
	store i8 %kind$, i8* %kind
	%t = alloca %type.TypeNode*
	%0 = call [0 x i8]* @sys_zalloc(i32 80)
	%1 = bitcast [0 x i8]* %0 to %type.TypeNode*
	store %type.TypeNode* %1, %type.TypeNode** %t
	%2 = load i8* %kind
	%3 = load %type.TypeNode** %t
	%4 = getelementptr %type.TypeNode* %3, i32 0, i32 14
	store i8 %2, i8* %4
	%5 = load %type.TypeNode** %t
	store %type.TypeNode* %5, %type.TypeNode** %rv.0
	br label %return
return:
	%6 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %6
}
define internal %type.TypeNode* @type_MakeRef(%type.TypeNode* %bt$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%bt = alloca %type.TypeNode*
	store %type.TypeNode* %bt$, %type.TypeNode** %bt
	%t = alloca %type.TypeNode*
	%0 = load %type.TypeNode** %bt
	%1 = getelementptr %type.TypeNode* %0, i32 0, i32 6
	%2 = load %type.TypeNode** %1
	%3 = bitcast %type.TypeNode* %2 to %type.TypeNode*
	store %type.TypeNode* %3, %type.TypeNode** %t
	%4 = load %type.TypeNode** %t
	%5 = icmp eq %type.TypeNode* %4, null
	br i1 %5, label %L.2, label %L.1
L.2:
	%6 = call %type.TypeNode* @type_New(i8 5)
	store %type.TypeNode* %6, %type.TypeNode** %t
	%7 = load %type.TypeNode** %bt
	%8 = bitcast %type.TypeNode* %7 to %type.TypeNode*
	%9 = load %type.TypeNode** %t
	%10 = getelementptr %type.TypeNode* %9, i32 0, i32 0
	store %type.TypeNode* %8, %type.TypeNode** %10
	%11 = load %target.ModelT** @target_Target
	%12 = getelementptr %target.ModelT* %11, i32 0, i32 0
	%13 = load i8* %12
	%14 = load %type.TypeNode** %t
	%15 = getelementptr %type.TypeNode* %14, i32 0, i32 16
	store i8 %13, i8* %15
	%16 = load %target.ModelT** @target_Target
	%17 = getelementptr %target.ModelT* %16, i32 0, i32 6
	%18 = getelementptr %target.SizeAlign* %17, i32 0, i32 0
	%19 = load i8* %18
	%20 = zext i8 %19 to i32
	%21 = load %type.TypeNode** %t
	%22 = getelementptr %type.TypeNode* %21, i32 0, i32 9
	store i32 %20, i32* %22
	%23 = load %target.ModelT** @target_Target
	%24 = getelementptr %target.ModelT* %23, i32 0, i32 6
	%25 = getelementptr %target.SizeAlign* %24, i32 0, i32 0
	%26 = load i8* %25
	%27 = zext i8 %26 to i32
	%28 = load %type.TypeNode** %t
	%29 = getelementptr %type.TypeNode* %28, i32 0, i32 10
	store i32 %27, i32* %29
	%30 = load %target.ModelT** @target_Target
	%31 = getelementptr %target.ModelT* %30, i32 0, i32 6
	%32 = getelementptr %target.SizeAlign* %31, i32 0, i32 1
	%33 = load i8* %32
	%34 = zext i8 %33 to i32
	%35 = load %type.TypeNode** %t
	%36 = getelementptr %type.TypeNode* %35, i32 0, i32 11
	store i32 %34, i32* %36
	%37 = load %type.TypeNode** %t
	%38 = bitcast %type.TypeNode* %37 to %type.TypeNode*
	%39 = load %type.TypeNode** %t
	%40 = getelementptr %type.TypeNode* %39, i32 0, i32 6
	store %type.TypeNode* %38, %type.TypeNode** %40
	br label %L.1
L.1:
	%41 = load %type.TypeNode** %t
	store %type.TypeNode* %41, %type.TypeNode** %rv.0
	br label %return
return:
	%42 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %42
}
define internal %type.TypeNode* @type_Clone(%type.TypeNode* %ot$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%ot = alloca %type.TypeNode*
	store %type.TypeNode* %ot$, %type.TypeNode** %ot
	%nt = alloca %type.TypeNode*
	%0 = load %type.TypeNode** %ot
	%1 = getelementptr %type.TypeNode* %0, i32 0, i32 14
	%2 = load i8* %1
	%3 = call %type.TypeNode* @type_New(i8 %2)
	store %type.TypeNode* %3, %type.TypeNode** %nt
	%4 = load %type.TypeNode** %ot
	%5 = load %type.TypeNode* %4
	%6 = load %type.TypeNode** %nt
	store %type.TypeNode %5, %type.TypeNode* %6
	%7 = load %type.TypeNode** %nt
	%8 = getelementptr %type.TypeNode* %7, i32 0, i32 3
	store %symb.SymbNode* null, %symb.SymbNode** %8
	%9 = load %type.TypeNode** %nt
	%10 = getelementptr %type.TypeNode* %9, i32 0, i32 30
	store i8 0, i8* %10
	br label %return
return:
	%11 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %11
}
define internal %type.TypeNode* @type_ChangeOrder(%type.TypeNode* %told$, i8 zeroext %neworder$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%told = alloca %type.TypeNode*
	%neworder = alloca i8
	store %type.TypeNode* %told$, %type.TypeNode** %told
	store i8 %neworder$, i8* %neworder
	%t = alloca %type.TypeNode*
	%0 = load %type.TypeNode** %told
	%1 = call %type.TypeNode* @type_Clone(%type.TypeNode* %0)
	store %type.TypeNode* %1, %type.TypeNode** %t
	%2 = load i8* %neworder
	%3 = load %type.TypeNode** %t
	%4 = getelementptr %type.TypeNode* %3, i32 0, i32 16
	store i8 %2, i8* %4
	%5 = load %type.TypeNode** %t
	%6 = getelementptr %type.TypeNode* %5, i32 0, i32 30
	store i8 1, i8* %6
	%7 = load %type.TypeNode** %t
	store %type.TypeNode* %7, %type.TypeNode** %rv.0
	br label %return
return:
	%8 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %8
}
define internal %type.TypeNode* @type_ForceUnAligned(%type.TypeNode* %told$, i32 %align$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%told = alloca %type.TypeNode*
	%align = alloca i32
	store %type.TypeNode* %told$, %type.TypeNode** %told
	store i32 %align$, i32* %align
	%t = alloca %type.TypeNode*
	%0 = load %type.TypeNode** %told
	%1 = call %type.TypeNode* @type_Clone(%type.TypeNode* %0)
	store %type.TypeNode* %1, %type.TypeNode** %t
	%2 = load %type.TypeNode** %told
	%3 = bitcast %type.TypeNode* %2 to %type.TypeNode*
	%4 = load %type.TypeNode** %t
	%5 = getelementptr %type.TypeNode* %4, i32 0, i32 1
	store %type.TypeNode* %3, %type.TypeNode** %5
	%6 = load i32* %align
	%7 = load %type.TypeNode** %t
	%8 = getelementptr %type.TypeNode* %7, i32 0, i32 11
	store i32 %6, i32* %8
	%9 = load %type.TypeNode** %t
	%10 = getelementptr %type.TypeNode* %9, i32 0, i32 22
	store i8 1, i8* %10
	%11 = load %type.TypeNode** %t
	%12 = getelementptr %type.TypeNode* %11, i32 0, i32 30
	store i8 1, i8* %12
	%13 = load %type.TypeNode** %t
	store %type.TypeNode* %13, %type.TypeNode** %rv.0
	br label %return
return:
	%14 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %14
}
@type_askip1 = internal constant [4 x i8] [ i8 33, i8 4, i8 0, i8 0 ], align 1
@type_askip2 = internal constant [5 x i8] [ i8 5, i8 33, i8 4, i8 0, i8 0 ], align 1
define internal void @type_XLinkage(%symb.SymbNode* %s$, i8 zeroext %constok$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	%constok = alloca i8
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store i8 %constok$, i8* %constok
	%tok = alloca i8
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 32
	br i1 %2, label %L.2, label %L.1
L.2:
	%3 = call i8 @lex_Next()
	store i8 %3, i8* %tok
	%4 = load i8* %tok
	%5 = icmp eq i8 %4, 40
	br i1 %5, label %L.4, label %L.5
L.4:
	%6 = bitcast [4096 x i8]* @lex_StringBuf to [0 x i8]*
	%7 = call %symb.SymbNode* @symb_NewString([0 x i8]* %6)
	%8 = bitcast %symb.SymbNode* %7 to %symb.SymbNode*
	%9 = load %symb.SymbNode** %s
	%10 = getelementptr %symb.SymbNode* %9, i32 0, i32 6
	store %symb.SymbNode* %8, %symb.SymbNode** %10
	%11 = call i8 @lex_Next()
	store i8 %11, i8* %tok
	br label %L.3
L.5:
	%12 = load i8* %constok
	%13 = icmp ne i8 %12, 0
	br i1 %13, label %L.7, label %L.6
L.7:
	%14 = load %type.TypeNode** @type_wordtype
	%15 = call i64 @expr_ConstValue(%type.TypeNode* %14)
	%16 = load %symb.SymbNode** %s
	%17 = getelementptr %symb.SymbNode* %16, i32 0, i32 9
	store i64 %15, i64* %17
	%18 = load %symb.SymbNode** %s
	%19 = getelementptr %symb.SymbNode* %18, i32 0, i32 14
	store i8 6, i8* %19
	br label %L.6
L.6:
	br label %L.3
L.3:
	%20 = call i8 @lex_Expect(i8 33)
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
define internal void @type_XSection(%symb.SymbNode* %s$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%tok = alloca i8
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 32
	br i1 %2, label %L.2, label %L.1
L.2:
	%3 = call i8 @lex_Next()
	store i8 %3, i8* %tok
	%4 = load i8* %tok
	%5 = icmp eq i8 %4, 40
	br i1 %5, label %L.4, label %L.3
L.4:
	%6 = bitcast [4096 x i8]* @lex_StringBuf to [0 x i8]*
	%7 = call %symb.SymbNode* @symb_NewString([0 x i8]* %6)
	%8 = bitcast %symb.SymbNode* %7 to %symb.SymbNode*
	%9 = load %symb.SymbNode** %s
	%10 = getelementptr %symb.SymbNode* %9, i32 0, i32 7
	store %symb.SymbNode* %8, %symb.SymbNode** %10
	%11 = call i8 @lex_Next()
	store i8 %11, i8* %tok
	%12 = call i8 @lex_Expect(i8 33)
	br label %return
L.3:
	br label %L.1
L.1:
	call void @lex_Error(i8 78)
	br label %return
return:
	ret void
}
@type_tattrlist = internal constant [14 x i8] [ i8 69, i8 70, i8 71, i8 72, i8 73, i8 74, i8 75, i8 76, i8 77, i8 78, i8 91, i8 90, i8 83, i8 0 ], align 1
define internal %type.TypeNode* @type_Attributes(%symb.SymbNode* %s$, %type.TypeNode* %t$, [0 x i8]* %sattrlist$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%s = alloca %symb.SymbNode*
	%t = alloca %type.TypeNode*
	%sattrlist = alloca [0 x i8]*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store %type.TypeNode* %t$, %type.TypeNode** %t
	store [0 x i8]* %sattrlist$, [0 x i8]** %sattrlist
	%tok = alloca i8
	%atok = alloca i8
	%at = alloca %type.TypeNode*
	br label %L.1
L.1:
	%0 = call i8 @lex_Next()
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 41
	br i1 %2, label %L.4, label %L.5
L.4:
	%3 = bitcast [14 x i8]* @type_tattrlist to [0 x i8]*
	%4 = call i8 @lex_Keyword([0 x i8]* %3)
	store i8 %4, i8* %atok
	%5 = load i8* %atok
	%6 = load i8* %tok
	%7 = icmp ne i8 %5, %6
	br i1 %7, label %L.7, label %L.8
L.7:
	%8 = call i8 @lex_Next()
	store i8 %8, i8* %tok
	%9 = load %type.TypeNode** %t
	%10 = getelementptr %type.TypeNode* %9, i32 0, i32 30
	%11 = load i8* %10
	%12 = icmp ne i8 %11, 0
	br i1 %12, label %L.10, label %L.9
L.10:
	%13 = load %type.TypeNode** %t
	store %type.TypeNode* %13, %type.TypeNode** %at
	%14 = load %type.TypeNode** %at
	%15 = call %type.TypeNode* @type_Clone(%type.TypeNode* %14)
	store %type.TypeNode* %15, %type.TypeNode** %t
	%16 = load %type.TypeNode** %at
	%17 = bitcast %type.TypeNode* %16 to %type.TypeNode*
	%18 = load %type.TypeNode** %t
	%19 = getelementptr %type.TypeNode* %18, i32 0, i32 1
	store %type.TypeNode* %17, %type.TypeNode** %19
	br label %L.9
L.9:
	%20 = load i8* %atok
	%21 = zext i8 %20 to i32
	switch i32 %21, label %L.11 [
		i32 69, label %L.13
		i32 70, label %L.14
		i32 71, label %L.15
		i32 72, label %L.16
		i32 73, label %L.17
		i32 74, label %L.18
		i32 75, label %L.19
		i32 76, label %L.20
		i32 77, label %L.21
		i32 78, label %L.22
		i32 91, label %L.23
		i32 90, label %L.24
		i32 83, label %L.25
	]
L.13:
	%22 = load %type.TypeNode** %t
	%23 = getelementptr %type.TypeNode* %22, i32 0, i32 21
	store i8 1, i8* %23
	br label %L.12
L.14:
	%24 = load %type.TypeNode** %t
	%25 = getelementptr %type.TypeNode* %24, i32 0, i32 23
	store i8 1, i8* %25
	br label %L.12
L.15:
	%26 = load %type.TypeNode** %t
	%27 = getelementptr %type.TypeNode* %26, i32 0, i32 15
	store i8 2, i8* %27
	br label %L.12
L.16:
	%28 = load %type.TypeNode** %t
	%29 = getelementptr %type.TypeNode* %28, i32 0, i32 15
	store i8 1, i8* %29
	br label %L.12
L.17:
	%30 = load %type.TypeNode** %t
	%31 = getelementptr %type.TypeNode* %30, i32 0, i32 16
	store i8 2, i8* %31
	br label %L.12
L.18:
	%32 = load %type.TypeNode** %t
	%33 = getelementptr %type.TypeNode* %32, i32 0, i32 16
	store i8 1, i8* %33
	br label %L.12
L.19:
	%34 = load %type.TypeNode** %t
	%35 = getelementptr %type.TypeNode* %34, i32 0, i32 17
	store i8 1, i8* %35
	br label %L.12
L.20:
	%36 = load %type.TypeNode** %t
	%37 = getelementptr %type.TypeNode* %36, i32 0, i32 17
	store i8 2, i8* %37
	br label %L.12
L.21:
	%38 = load %type.TypeNode** %t
	%39 = getelementptr %type.TypeNode* %38, i32 0, i32 26
	store i8 1, i8* %39
	br label %L.12
L.22:
	%40 = load %type.TypeNode** %t
	%41 = getelementptr %type.TypeNode* %40, i32 0, i32 27
	store i8 1, i8* %41
	br label %L.12
L.23:
	%42 = load i8* %tok
	%43 = icmp eq i8 %42, 32
	br i1 %43, label %L.27, label %L.26
L.27:
	%44 = call i8 @lex_Next()
	store i8 %44, i8* %tok
	%45 = load %type.TypeNode** @type_wordtype
	%46 = call i64 @expr_ConstValue(%type.TypeNode* %45)
	%47 = load %target.ModelT** @target_Target
	%48 = getelementptr %target.ModelT* %47, i32 0, i32 2
	%49 = load i8* %48
	%50 = zext i8 %49 to i64
	%51 = mul i64 %46, %50
	%52 = trunc i64 %51 to i32
	%53 = load %type.TypeNode** %t
	%54 = getelementptr %type.TypeNode* %53, i32 0, i32 10
	store i32 %52, i32* %54
	%55 = load %type.TypeNode** %t
	%56 = getelementptr %type.TypeNode* %55, i32 0, i32 19
	store i8 1, i8* %56
	%57 = call i8 @lex_Expect(i8 33)
	br label %L.26
L.26:
	br label %L.12
L.24:
	%58 = load i8* %tok
	%59 = icmp eq i8 %58, 32
	br i1 %59, label %L.29, label %L.28
L.29:
	%60 = call i8 @lex_Next()
	store i8 %60, i8* %tok
	%61 = load %type.TypeNode** @type_wordtype
	%62 = call i64 @expr_ConstValue(%type.TypeNode* %61)
	%63 = trunc i64 %62 to i32
	%64 = load %type.TypeNode** %t
	%65 = getelementptr %type.TypeNode* %64, i32 0, i32 9
	store i32 %63, i32* %65
	%66 = load %type.TypeNode** %t
	%67 = getelementptr %type.TypeNode* %66, i32 0, i32 18
	store i8 1, i8* %67
	%68 = call i8 @lex_Expect(i8 33)
	br label %L.28
L.28:
	br label %L.12
L.25:
	%69 = load i8* %tok
	%70 = icmp eq i8 %69, 32
	br i1 %70, label %L.31, label %L.30
L.31:
	%71 = call i8 @lex_Next()
	store i8 %71, i8* %tok
	%72 = load %type.TypeNode** @type_wordtype
	%73 = call i64 @expr_ConstValue(%type.TypeNode* %72)
	%74 = load %target.ModelT** @target_Target
	%75 = getelementptr %target.ModelT* %74, i32 0, i32 2
	%76 = load i8* %75
	%77 = zext i8 %76 to i64
	%78 = mul i64 %73, %77
	%79 = trunc i64 %78 to i32
	%80 = load %type.TypeNode** %t
	%81 = getelementptr %type.TypeNode* %80, i32 0, i32 11
	store i32 %79, i32* %81
	%82 = load %type.TypeNode** %t
	%83 = getelementptr %type.TypeNode* %82, i32 0, i32 11
	%84 = load i32* %83
	%85 = icmp eq i32 %84, 0
	br i1 %85, label %L.33, label %L.32
L.33:
	%86 = load %target.ModelT** @target_Target
	%87 = getelementptr %target.ModelT* %86, i32 0, i32 2
	%88 = load i8* %87
	%89 = zext i8 %88 to i32
	%90 = load %type.TypeNode** %t
	%91 = getelementptr %type.TypeNode* %90, i32 0, i32 11
	store i32 %89, i32* %91
	br label %L.32
L.32:
	%92 = load %type.TypeNode** %t
	%93 = getelementptr %type.TypeNode* %92, i32 0, i32 20
	store i8 1, i8* %93
	%94 = call i8 @lex_Expect(i8 33)
	br label %L.30
L.30:
	br label %L.12
L.11:
	br label %L.12
L.12:
	br label %L.6
L.8:
	%95 = load %symb.SymbNode** %s
	%96 = icmp ne %symb.SymbNode* %95, null
	br i1 %96, label %L.35, label %L.36
L.35:
	%97 = load [0 x i8]** %sattrlist
	%98 = bitcast [0 x i8]* %97 to [0 x i8]*
	%99 = call i8 @lex_Keyword([0 x i8]* %98)
	store i8 %99, i8* %atok
	%100 = load i8* %atok
	%101 = load i8* %tok
	%102 = icmp ne i8 %100, %101
	br i1 %102, label %L.38, label %L.39
L.38:
	%103 = call i8 @lex_Next()
	store i8 %103, i8* %tok
	%104 = load i8* %atok
	%105 = zext i8 %104 to i32
	switch i32 %105, label %L.40 [
		i32 84, label %L.42
		i32 85, label %L.43
		i32 81, label %L.44
		i32 87, label %L.45
		i32 80, label %L.46
		i32 82, label %L.47
		i32 79, label %L.48
	]
L.42:
	%106 = load %symb.SymbNode** %s
	%107 = getelementptr %symb.SymbNode* %106, i32 0, i32 14
	store i8 7, i8* %107
	br label %L.41
L.43:
	%108 = load %symb.SymbNode** %s
	%109 = getelementptr %symb.SymbNode* %108, i32 0, i32 14
	store i8 8, i8* %109
	br label %L.41
L.44:
	%110 = load %symb.SymbNode** %s
	%111 = getelementptr %symb.SymbNode* %110, i32 0, i32 14
	%112 = load i8* %111
	%113 = icmp ne i8 %112, 4
	br i1 %113, label %L.50, label %L.49
L.50:
	%114 = load %symb.SymbNode** %s
	%115 = getelementptr %symb.SymbNode* %114, i32 0, i32 14
	store i8 3, i8* %115
	br label %L.49
L.49:
	%116 = load %symb.SymbNode** %s
	call void @type_XLinkage(%symb.SymbNode* %116, i8 0)
	br label %L.41
L.45:
	%117 = load %symb.SymbNode** %s
	%118 = getelementptr %symb.SymbNode* %117, i32 0, i32 14
	store i8 4, i8* %118
	%119 = load %symb.SymbNode** %s
	call void @type_XLinkage(%symb.SymbNode* %119, i8 0)
	br label %L.41
L.46:
	%120 = load %symb.SymbNode** %s
	%121 = getelementptr %symb.SymbNode* %120, i32 0, i32 14
	store i8 5, i8* %121
	%122 = load %symb.SymbNode** %s
	call void @type_XLinkage(%symb.SymbNode* %122, i8 1)
	br label %L.41
L.47:
	%123 = load %symb.SymbNode** %s
	call void @type_XSection(%symb.SymbNode* %123)
	br label %L.41
L.48:
	%124 = load i8* %tok
	%125 = icmp eq i8 %124, 32
	br i1 %125, label %L.52, label %L.51
L.52:
	%126 = call i8 @lex_Next()
	store i8 %126, i8* %tok
	%127 = load %type.TypeNode** @type_wordtype
	%128 = call i64 @expr_ConstValue(%type.TypeNode* %127)
	%129 = load %symb.SymbNode** %s
	%130 = getelementptr %symb.SymbNode* %129, i32 0, i32 9
	store i64 %128, i64* %130
	%131 = call i8 @lex_Expect(i8 33)
	br label %L.51
L.51:
	br label %L.41
L.40:
	br label %L.41
L.41:
	br label %L.37
L.39:
	%132 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 32, [0 x i8]* %132)
	br label %L.37
L.37:
	br label %L.34
L.36:
	%133 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 32, [0 x i8]* %133)
	%134 = call i8 @lex_Next()
	store i8 %134, i8* %tok
	br label %L.34
L.34:
	br label %L.6
L.6:
	br label %L.3
L.5:
	%135 = load i8* %tok
	%136 = icmp ne i8 %135, 4
	br i1 %136, label %L.54, label %L.53
L.54:
	call void @lex_Error(i8 18)
	%137 = bitcast [5 x i8]* @type_askip2 to [0 x i8]*
	%138 = call i8 @lex_Skip([0 x i8]* %137)
	store i8 %138, i8* %tok
	br label %L.53
L.53:
	br label %L.3
L.3:
	%139 = load i8* @lex_Token
	store i8 %139, i8* %tok
	%140 = load i8* %tok
	%141 = icmp ne i8 %140, 5
	br i1 %141, label %L.2, label %L.55
L.55:
	br label %L.1
L.2:
	%142 = load %type.TypeNode** %t
	store %type.TypeNode* %142, %type.TypeNode** %rv.0
	br label %return
return:
	%143 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %143
}
@type_nattrlist = internal constant [1 x i8] [ i8 0 ], align 1
define internal %type.TypeNode* @type_TypeAttributes(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%0 = load %type.TypeNode** %t
	%1 = bitcast [1 x i8]* @type_nattrlist to [0 x i8]*
	%2 = call %type.TypeNode* @type_Attributes(%symb.SymbNode* null, %type.TypeNode* %0, [0 x i8]* %1)
	store %type.TypeNode* %2, %type.TypeNode** %rv.0
	br label %return
return:
	%3 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %3
}
@type_fattrlist = internal constant [2 x i8] [ i8 79, i8 0 ], align 1
define internal %type.TypeNode* @type_FieldAttributes(%symb.SymbNode* %s$, %type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%s = alloca %symb.SymbNode*
	%t = alloca %type.TypeNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%0 = load %symb.SymbNode** %s
	%1 = load %type.TypeNode** %t
	%2 = bitcast [2 x i8]* @type_fattrlist to [0 x i8]*
	%3 = call %type.TypeNode* @type_Attributes(%symb.SymbNode* %0, %type.TypeNode* %1, [0 x i8]* %2)
	store %type.TypeNode* %3, %type.TypeNode** %rv.0
	br label %return
return:
	%4 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %4
}
@type_vattrlist = internal constant [5 x i8] [ i8 80, i8 81, i8 87, i8 82, i8 0 ], align 1
define internal %type.TypeNode* @type_VarAttributes(%symb.SymbNode* %s$, %type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%s = alloca %symb.SymbNode*
	%t = alloca %type.TypeNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%0 = load %symb.SymbNode** %s
	%1 = load %type.TypeNode** %t
	%2 = bitcast [5 x i8]* @type_vattrlist to [0 x i8]*
	%3 = call %type.TypeNode* @type_Attributes(%symb.SymbNode* %0, %type.TypeNode* %1, [0 x i8]* %2)
	store %type.TypeNode* %3, %type.TypeNode** %rv.0
	br label %return
return:
	%4 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %4
}
@type_pattrlist = internal constant [7 x i8] [ i8 80, i8 81, i8 87, i8 82, i8 84, i8 85, i8 0 ], align 1
define internal void @type_ProcAttributes(%symb.SymbNode* %s$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%t = alloca %type.TypeNode*
	%0 = load %symb.SymbNode** %s
	%1 = load %symb.SymbNode** %s
	%2 = getelementptr %symb.SymbNode* %1, i32 0, i32 1
	%3 = load %type.TypeNode** %2
	%4 = bitcast [7 x i8]* @type_pattrlist to [0 x i8]*
	%5 = call %type.TypeNode* @type_Attributes(%symb.SymbNode* %0, %type.TypeNode* %3, [0 x i8]* %4)
	store %type.TypeNode* %5, %type.TypeNode** %t
	%6 = load %type.TypeNode** %t
	%7 = load %symb.SymbNode** %s
	%8 = getelementptr %symb.SymbNode* %7, i32 0, i32 1
	store %type.TypeNode* %6, %type.TypeNode** %8
	br label %return
return:
	ret void
}
define internal zeroext i8 @type_bitsize(i64 %x$) nounwind {
L.0:
	%rv.0 = alloca i8
	%x = alloca i64
	store i64 %x$, i64* %x
	%t = alloca i64
	%n = alloca i8
	store i8 1, i8* %n
	store i64 1, i64* %t
	br label %L.1
L.1:
	%0 = load i64* %t
	%1 = load i64* %x
	%2 = icmp ult i64 %0, %1
	%3 = xor i1 %2, true
	br i1 %3, label %L.2, label %L.3
L.3:
	%4 = load i64* %t
	%5 = shl i64 %4, 1
	store i64 %5, i64* %t
	%6 = load i64* %t
	%7 = add i64 %6, 1
	store i64 %7, i64* %t
	%8 = load i8* %n
	%9 = add i8 %8, 1
	store i8 %9, i8* %n
	br label %L.1
L.2:
	%10 = load i8* %n
	store i8 %10, i8* %rv.0
	br label %return
return:
	%11 = load i8* %rv.0
	ret i8 %11
}
@S.524 = internal constant [2 x i8] c"_\00"
define internal zeroext i16 @type_FieldPad(%symb.SymbNode* %prev$, i32 %pad$, i16 zeroext %index$) nounwind {
L.0:
	%rv.0 = alloca i16
	%prev = alloca %symb.SymbNode*
	%pad = alloca i32
	%index = alloca i16
	store %symb.SymbNode* %prev$, %symb.SymbNode** %prev
	store i32 %pad$, i32* %pad
	store i16 %index$, i16* %index
	%last = alloca %symb.SymbNode*
	%s = alloca %symb.SymbNode*
	%t = alloca %type.TypeNode*
	%0 = load i32* %pad
	%1 = icmp ugt i32 %0, 1
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = call %type.TypeNode* @type_New(i8 6)
	store %type.TypeNode* %2, %type.TypeNode** %t
	%3 = load %type.TypeNode** @type_wordtype
	%4 = bitcast %type.TypeNode* %3 to %type.TypeNode*
	%5 = load %type.TypeNode** %t
	%6 = getelementptr %type.TypeNode* %5, i32 0, i32 2
	store %type.TypeNode* %4, %type.TypeNode** %6
	%7 = load %type.TypeNode** @type_bytetype
	%8 = bitcast %type.TypeNode* %7 to %type.TypeNode*
	%9 = load %type.TypeNode** %t
	%10 = getelementptr %type.TypeNode* %9, i32 0, i32 0
	store %type.TypeNode* %8, %type.TypeNode** %10
	%11 = load %type.TypeNode** %t
	%12 = getelementptr %type.TypeNode* %11, i32 0, i32 7
	store i64 0, i64* %12
	%13 = load i32* %pad
	%14 = zext i32 %13 to i64
	%15 = sub i64 %14, 1
	%16 = load %type.TypeNode** %t
	%17 = getelementptr %type.TypeNode* %16, i32 0, i32 8
	store i64 %15, i64* %17
	%18 = load i32* %pad
	%19 = load %target.ModelT** @target_Target
	%20 = getelementptr %target.ModelT* %19, i32 0, i32 2
	%21 = load i8* %20
	%22 = zext i8 %21 to i32
	%23 = mul i32 %18, %22
	%24 = load %type.TypeNode** %t
	%25 = getelementptr %type.TypeNode* %24, i32 0, i32 9
	store i32 %23, i32* %25
	%26 = load %type.TypeNode** %t
	%27 = getelementptr %type.TypeNode* %26, i32 0, i32 9
	%28 = load i32* %27
	%29 = load %type.TypeNode** %t
	%30 = getelementptr %type.TypeNode* %29, i32 0, i32 10
	store i32 %28, i32* %30
	%31 = load %type.TypeNode** @type_bytetype
	%32 = getelementptr %type.TypeNode* %31, i32 0, i32 11
	%33 = load i32* %32
	%34 = load %type.TypeNode** %t
	%35 = getelementptr %type.TypeNode* %34, i32 0, i32 11
	store i32 %33, i32* %35
	%36 = load %type.TypeNode** %t
	%37 = getelementptr %type.TypeNode* %36, i32 0, i32 30
	store i8 1, i8* %37
	br label %L.1
L.3:
	%38 = load %type.TypeNode** @type_bytetype
	store %type.TypeNode* %38, %type.TypeNode** %t
	br label %L.1
L.1:
	%39 = getelementptr [2 x i8]* @S.524
	%40 = bitcast [2 x i8]* %39 to [0 x i8]*
	%41 = call %symb.SymbNode* @symb_New(i8 4, [0 x i8]* %40, i8 2)
	store %symb.SymbNode* %41, %symb.SymbNode** %s
	%42 = load %type.TypeNode** %t
	%43 = load %symb.SymbNode** %s
	%44 = getelementptr %symb.SymbNode* %43, i32 0, i32 1
	store %type.TypeNode* %42, %type.TypeNode** %44
	%45 = load i16* %index
	%46 = load %symb.SymbNode** %s
	%47 = getelementptr %symb.SymbNode* %46, i32 0, i32 10
	store i16 %45, i16* %47
	%48 = load %symb.SymbNode** %s
	%49 = getelementptr %symb.SymbNode* %48, i32 0, i32 18
	store i8 1, i8* %49
	%50 = load %symb.SymbNode** %prev
	%51 = getelementptr %symb.SymbNode* %50, i32 0, i32 0
	%52 = load %symb.SymbNode** %51
	%53 = load %symb.SymbNode** %s
	%54 = getelementptr %symb.SymbNode* %53, i32 0, i32 0
	store %symb.SymbNode* %52, %symb.SymbNode** %54
	%55 = load %symb.SymbNode** %s
	%56 = bitcast %symb.SymbNode* %55 to %symb.SymbNode*
	%57 = load %symb.SymbNode** %prev
	%58 = getelementptr %symb.SymbNode* %57, i32 0, i32 0
	store %symb.SymbNode* %56, %symb.SymbNode** %58
	%59 = load i16* %index
	%60 = add i16 %59, 1
	store i16 %60, i16* %index
	%61 = load i16* %index
	store i16 %61, i16* %rv.0
	br label %return
return:
	%62 = load i16* %rv.0
	ret i16 %62
}
@S.525 = internal constant [2 x i8] c"_\00"
define internal zeroext i16 @type_BitFieldPad(%symb.SymbNode* %prev$, i32 %pad$, i16 zeroext %index$) nounwind {
L.0:
	%rv.0 = alloca i16
	%prev = alloca %symb.SymbNode*
	%pad = alloca i32
	%index = alloca i16
	store %symb.SymbNode* %prev$, %symb.SymbNode** %prev
	store i32 %pad$, i32* %pad
	store i16 %index$, i16* %index
	%last = alloca %symb.SymbNode*
	%s = alloca %symb.SymbNode*
	%t = alloca %type.TypeNode*
	%0 = call %type.TypeNode* @type_New(i8 2)
	store %type.TypeNode* %0, %type.TypeNode** %t
	%1 = load i32* %pad
	%2 = load %type.TypeNode** %t
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 9
	store i32 %1, i32* %3
	%4 = load i32* %pad
	%5 = load %type.TypeNode** %t
	%6 = getelementptr %type.TypeNode* %5, i32 0, i32 10
	store i32 %4, i32* %6
	%7 = load %type.TypeNode** %t
	%8 = getelementptr %type.TypeNode* %7, i32 0, i32 30
	store i8 1, i8* %8
	%9 = getelementptr [2 x i8]* @S.525
	%10 = bitcast [2 x i8]* %9 to [0 x i8]*
	%11 = call %symb.SymbNode* @symb_New(i8 4, [0 x i8]* %10, i8 2)
	store %symb.SymbNode* %11, %symb.SymbNode** %s
	%12 = load %type.TypeNode** %t
	%13 = load %symb.SymbNode** %s
	%14 = getelementptr %symb.SymbNode* %13, i32 0, i32 1
	store %type.TypeNode* %12, %type.TypeNode** %14
	%15 = load i16* %index
	%16 = load %symb.SymbNode** %s
	%17 = getelementptr %symb.SymbNode* %16, i32 0, i32 10
	store i16 %15, i16* %17
	%18 = load %symb.SymbNode** %s
	%19 = getelementptr %symb.SymbNode* %18, i32 0, i32 18
	store i8 1, i8* %19
	%20 = load %symb.SymbNode** %prev
	%21 = getelementptr %symb.SymbNode* %20, i32 0, i32 0
	%22 = load %symb.SymbNode** %21
	%23 = load %symb.SymbNode** %s
	%24 = getelementptr %symb.SymbNode* %23, i32 0, i32 0
	store %symb.SymbNode* %22, %symb.SymbNode** %24
	%25 = load %symb.SymbNode** %s
	%26 = bitcast %symb.SymbNode* %25 to %symb.SymbNode*
	%27 = load %symb.SymbNode** %prev
	%28 = getelementptr %symb.SymbNode* %27, i32 0, i32 0
	store %symb.SymbNode* %26, %symb.SymbNode** %28
	%29 = load i16* %index
	%30 = add i16 %29, 1
	store i16 %30, i16* %index
	%31 = load i16* %index
	store i16 %31, i16* %rv.0
	br label %return
return:
	%32 = load i16* %rv.0
	ret i16 %32
}
define internal %type.TypeNode* @type_ForcePacked(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%0 = load %type.TypeNode** %t
	%1 = getelementptr %type.TypeNode* %0, i32 0, i32 14
	%2 = load i8* %1
	%3 = icmp eq i8 %2, 7
	br i1 %3, label %L.4, label %L.3
L.3:
	%4 = load %type.TypeNode** %t
	%5 = getelementptr %type.TypeNode* %4, i32 0, i32 14
	%6 = load i8* %5
	%7 = icmp eq i8 %6, 6
	br label %L.4
L.4:
	%8 = phi i1 [ true, %L.0 ], [ %7, %L.3 ]
	br i1 %8, label %L.1, label %L.2
L.1:
	%9 = load %type.TypeNode** %t
	%10 = getelementptr %type.TypeNode* %9, i32 0, i32 21
	%11 = load i8* %10
	%12 = icmp ne i8 %11, 0
	%13 = xor i1 %12, true
	br label %L.2
L.2:
	%14 = phi i1 [ false, %L.4 ], [ %13, %L.1 ]
	br i1 %14, label %L.6, label %L.5
L.6:
	%15 = load %type.TypeNode** %t
	%16 = call %type.TypeNode* @type_Clone(%type.TypeNode* %15)
	store %type.TypeNode* %16, %type.TypeNode** %t
	%17 = load %type.TypeNode** %t
	%18 = getelementptr %type.TypeNode* %17, i32 0, i32 21
	store i8 1, i8* %18
	%19 = load %type.TypeNode** %t
	call void @type_Final(%type.TypeNode* %19)
	br label %L.5
L.5:
	%20 = load %type.TypeNode** %t
	store %type.TypeNode* %20, %type.TypeNode** %rv.0
	br label %return
return:
	%21 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %21
}
@S.527 = internal constant [6 x i8] c"UTYPE\00"
@S.528 = internal constant [5 x i8] c"ENUM\00"
@S.529 = internal constant [5 x i8] c"UINT\00"
@S.530 = internal constant [5 x i8] c"SINT\00"
@S.531 = internal constant [6 x i8] c"FLOAT\00"
@S.532 = internal constant [4 x i8] c"REF\00"
@S.533 = internal constant [6 x i8] c"ARRAY\00"
@S.534 = internal constant [7 x i8] c"RECORD\00"
@S.535 = internal constant [8 x i8] c"REFPROC\00"
@type_DumpType_tname = internal constant [9 x [0 x i8]*] [ [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.527 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.528 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.529 )  to [0 x i8]* ), [0 x i8]* bitcast( [5 x i8]* getelementptr( [5 x i8]* @S.530 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.531 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.532 )  to [0 x i8]* ), [0 x i8]* bitcast( [6 x i8]* getelementptr( [6 x i8]* @S.533 )  to [0 x i8]* ), [0 x i8]* bitcast( [7 x i8]* getelementptr( [7 x i8]* @S.534 )  to [0 x i8]* ), [0 x i8]* bitcast( [8 x i8]* getelementptr( [8 x i8]* @S.535 )  to [0 x i8]* ) ], align 4
define internal void @type_DumpType([0 x i8]* %msg$, %type.TypeNode* %t$) nounwind {
L.0:
	%msg = alloca [0 x i8]*
	%t = alloca %type.TypeNode*
	store [0 x i8]* %msg$, [0 x i8]** %msg
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%0 = load [0 x i8]** %msg
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %1)
	%2 = load %type.TypeNode** %t
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 14
	%4 = load i8* %3
	%5 = zext i8 %4 to i32
	%6 = getelementptr [9 x [0 x i8]*]* @type_DumpType_tname, i32 0, i32 %5
	%7 = load [0 x i8]** %6
	%8 = bitcast [0 x i8]* %7 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %8)
	call void @sys_fildes_nl(i32 2)
	%9 = load %type.TypeNode** %t
	call void @type_DumpT(%type.TypeNode* %9, i8 1)
	call void @sys_fildes_nl(i32 2)
	br label %return
return:
	ret void
}
@S.536 = internal constant [20 x i8] c"Field align is zero\00"
@S.537 = internal constant [23 x i8] c"Array of aligned items\00"
define internal void @type_Final(%type.TypeNode* %t$) nounwind {
L.0:
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%align = alloca i32
	%tlo = alloca i32
	%thi = alloca i32
	%f = alloca %symb.SymbNode*
	%prev = alloca %symb.SymbNode*
	%index = alloca i16
	%offs = alloca i32
	%mod = alloca i32
	%falign = alloca i32
	%atoffs = alloca i32
	%0 = load %type.TypeNode** %t
	%1 = icmp ne %type.TypeNode* %0, null
	br i1 %1, label %L.1, label %L.2
L.1:
	%2 = load %type.TypeNode** %t
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 30
	%4 = load i8* %3
	%5 = icmp ne i8 %4, 0
	%6 = xor i1 %5, true
	br label %L.2
L.2:
	%7 = phi i1 [ false, %L.0 ], [ %6, %L.1 ]
	br i1 %7, label %L.4, label %L.3
L.4:
	%8 = load %type.TypeNode** %t
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 15
	%10 = load i8* %9
	%11 = icmp eq i8 %10, 0
	br i1 %11, label %L.6, label %L.5
L.6:
	%12 = load %target.ModelT** @target_Target
	%13 = getelementptr %target.ModelT* %12, i32 0, i32 1
	%14 = load i8* %13
	%15 = load %type.TypeNode** %t
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 15
	store i8 %14, i8* %16
	br label %L.5
L.5:
	%17 = load %type.TypeNode** %t
	%18 = getelementptr %type.TypeNode* %17, i32 0, i32 16
	%19 = load i8* %18
	%20 = icmp eq i8 %19, 0
	br i1 %20, label %L.8, label %L.7
L.8:
	%21 = load %target.ModelT** @target_Target
	%22 = getelementptr %target.ModelT* %21, i32 0, i32 0
	%23 = load i8* %22
	%24 = load %type.TypeNode** %t
	%25 = getelementptr %type.TypeNode* %24, i32 0, i32 16
	store i8 %23, i8* %25
	br label %L.7
L.7:
	%26 = load %type.TypeNode** %t
	%27 = getelementptr %type.TypeNode* %26, i32 0, i32 18
	%28 = load i8* %27
	%29 = icmp ne i8 %28, 0
	br i1 %29, label %L.10, label %L.9
L.10:
	%30 = load %type.TypeNode** %t
	%31 = getelementptr %type.TypeNode* %30, i32 0, i32 19
	%32 = load i8* %31
	%33 = icmp ne i8 %32, 0
	%34 = xor i1 %33, true
	br i1 %34, label %L.12, label %L.11
L.12:
	%35 = load %type.TypeNode** %t
	%36 = getelementptr %type.TypeNode* %35, i32 0, i32 9
	%37 = load i32* %36
	%38 = call i32 @target_isize(i32 %37)
	%39 = load %type.TypeNode** %t
	%40 = getelementptr %type.TypeNode* %39, i32 0, i32 10
	store i32 %38, i32* %40
	br label %L.11
L.11:
	br label %L.9
L.9:
	%41 = load %type.TypeNode** %t
	%42 = getelementptr %type.TypeNode* %41, i32 0, i32 19
	%43 = load i8* %42
	%44 = icmp ne i8 %43, 0
	br i1 %44, label %L.14, label %L.13
L.14:
	%45 = load %type.TypeNode** %t
	%46 = getelementptr %type.TypeNode* %45, i32 0, i32 18
	%47 = load i8* %46
	%48 = icmp ne i8 %47, 0
	%49 = xor i1 %48, true
	br i1 %49, label %L.16, label %L.15
L.16:
	%50 = load %type.TypeNode** %t
	%51 = getelementptr %type.TypeNode* %50, i32 0, i32 10
	%52 = load i32* %51
	%53 = load %type.TypeNode** %t
	%54 = getelementptr %type.TypeNode* %53, i32 0, i32 9
	store i32 %52, i32* %54
	br label %L.15
L.15:
	br label %L.13
L.13:
	%55 = load %type.TypeNode** %t
	%56 = getelementptr %type.TypeNode* %55, i32 0, i32 14
	%57 = load i8* %56
	%58 = zext i8 %57 to i32
	switch i32 %58, label %L.17 [
		i32 0, label %L.19
		i32 1, label %L.20
		i32 2, label %L.20
		i32 3, label %L.21
		i32 4, label %L.22
		i32 5, label %L.23
		i32 8, label %L.24
		i32 7, label %L.25
		i32 6, label %L.26
	]
L.19:
	%59 = load %type.TypeNode** %t
	%60 = getelementptr %type.TypeNode* %59, i32 0, i32 11
	%61 = load i32* %60
	store i32 %61, i32* %align
	br label %L.18
L.20:
	%62 = load %type.TypeNode** %t
	%63 = getelementptr %type.TypeNode* %62, i32 0, i32 9
	%64 = load i32* %63
	%65 = icmp eq i32 %64, 0
	br i1 %65, label %L.28, label %L.27
L.28:
	%66 = load %type.TypeNode** %t
	%67 = getelementptr %type.TypeNode* %66, i32 0, i32 8
	%68 = load i64* %67
	%69 = call i8 @type_bitsize(i64 %68)
	%70 = zext i8 %69 to i32
	%71 = load %type.TypeNode** %t
	%72 = getelementptr %type.TypeNode* %71, i32 0, i32 9
	store i32 %70, i32* %72
	br label %L.27
L.27:
	%73 = load %type.TypeNode** %t
	%74 = getelementptr %type.TypeNode* %73, i32 0, i32 10
	%75 = load i32* %74
	%76 = icmp eq i32 %75, 0
	br i1 %76, label %L.30, label %L.29
L.30:
	%77 = load %type.TypeNode** %t
	%78 = getelementptr %type.TypeNode* %77, i32 0, i32 9
	%79 = load i32* %78
	%80 = call i32 @target_isize(i32 %79)
	%81 = load %type.TypeNode** %t
	%82 = getelementptr %type.TypeNode* %81, i32 0, i32 10
	store i32 %80, i32* %82
	br label %L.29
L.29:
	%83 = load %type.TypeNode** %t
	%84 = getelementptr %type.TypeNode* %83, i32 0, i32 9
	%85 = load i32* %84
	%86 = call i32 @target_ialign(i32 %85)
	store i32 %86, i32* %align
	br label %L.18
L.21:
	%87 = load %type.TypeNode** %t
	%88 = getelementptr %type.TypeNode* %87, i32 0, i32 9
	%89 = load i32* %88
	%90 = icmp eq i32 %89, 0
	br i1 %90, label %L.32, label %L.31
L.32:
	%91 = load %type.TypeNode** %t
	%92 = getelementptr %type.TypeNode* %91, i32 0, i32 7
	%93 = load i64* %92
	%94 = xor i64 %93, -1
	%95 = call i8 @type_bitsize(i64 %94)
	%96 = zext i8 %95 to i32
	store i32 %96, i32* %tlo
	%97 = load %type.TypeNode** %t
	%98 = getelementptr %type.TypeNode* %97, i32 0, i32 8
	%99 = load i64* %98
	%100 = call i8 @type_bitsize(i64 %99)
	%101 = zext i8 %100 to i32
	store i32 %101, i32* %thi
	%102 = load i32* %tlo
	%103 = load i32* %thi
	%104 = icmp ugt i32 %102, %103
	br i1 %104, label %L.34, label %L.35
L.34:
	%105 = load i32* %tlo
	%106 = add i32 %105, 1
	%107 = load %type.TypeNode** %t
	%108 = getelementptr %type.TypeNode* %107, i32 0, i32 9
	store i32 %106, i32* %108
	br label %L.33
L.35:
	%109 = load i32* %thi
	%110 = add i32 %109, 1
	%111 = load %type.TypeNode** %t
	%112 = getelementptr %type.TypeNode* %111, i32 0, i32 9
	store i32 %110, i32* %112
	br label %L.33
L.33:
	br label %L.31
L.31:
	%113 = load %type.TypeNode** %t
	%114 = getelementptr %type.TypeNode* %113, i32 0, i32 10
	%115 = load i32* %114
	%116 = icmp eq i32 %115, 0
	br i1 %116, label %L.37, label %L.36
L.37:
	%117 = load %type.TypeNode** %t
	%118 = getelementptr %type.TypeNode* %117, i32 0, i32 9
	%119 = load i32* %118
	%120 = call i32 @target_isize(i32 %119)
	%121 = load %type.TypeNode** %t
	%122 = getelementptr %type.TypeNode* %121, i32 0, i32 10
	store i32 %120, i32* %122
	br label %L.36
L.36:
	%123 = load %type.TypeNode** %t
	%124 = getelementptr %type.TypeNode* %123, i32 0, i32 9
	%125 = load i32* %124
	%126 = call i32 @target_ialign(i32 %125)
	store i32 %126, i32* %align
	br label %L.18
L.22:
	%127 = load %type.TypeNode** %t
	%128 = getelementptr %type.TypeNode* %127, i32 0, i32 9
	%129 = load i32* %128
	%130 = load %type.TypeNode** %t
	%131 = getelementptr %type.TypeNode* %130, i32 0, i32 10
	store i32 %129, i32* %131
	%132 = load %type.TypeNode** %t
	%133 = getelementptr %type.TypeNode* %132, i32 0, i32 9
	%134 = load i32* %133
	%135 = call i32 @target_ialign(i32 %134)
	store i32 %135, i32* %align
	br label %L.18
L.23:
	%136 = load %type.TypeNode** %t
	%137 = getelementptr %type.TypeNode* %136, i32 0, i32 0
	%138 = load %type.TypeNode** %137
	%139 = icmp ne %type.TypeNode* %138, null
	br i1 %139, label %L.38, label %L.39
L.38:
	%140 = load %type.TypeNode** %t
	%141 = getelementptr %type.TypeNode* %140, i32 0, i32 0
	%142 = load %type.TypeNode** %141
	%143 = getelementptr %type.TypeNode* %142, i32 0, i32 3
	%144 = load %symb.SymbNode** %143
	%145 = icmp eq %symb.SymbNode* %144, null
	br label %L.39
L.39:
	%146 = phi i1 [ false, %L.23 ], [ %145, %L.38 ]
	br i1 %146, label %L.41, label %L.40
L.41:
	%147 = load %type.TypeNode** %t
	%148 = getelementptr %type.TypeNode* %147, i32 0, i32 0
	%149 = load %type.TypeNode** %148
	%150 = bitcast %type.TypeNode* %149 to %type.TypeNode*
	call void @type_Final(%type.TypeNode* %150)
	br label %L.40
L.40:
	%151 = load %target.ModelT** @target_Target
	%152 = getelementptr %target.ModelT* %151, i32 0, i32 6
	%153 = getelementptr %target.SizeAlign* %152, i32 0, i32 0
	%154 = load i8* %153
	%155 = zext i8 %154 to i32
	%156 = load %type.TypeNode** %t
	%157 = getelementptr %type.TypeNode* %156, i32 0, i32 9
	store i32 %155, i32* %157
	%158 = load %target.ModelT** @target_Target
	%159 = getelementptr %target.ModelT* %158, i32 0, i32 6
	%160 = getelementptr %target.SizeAlign* %159, i32 0, i32 0
	%161 = load i8* %160
	%162 = zext i8 %161 to i32
	%163 = load %type.TypeNode** %t
	%164 = getelementptr %type.TypeNode* %163, i32 0, i32 10
	store i32 %162, i32* %164
	%165 = load %target.ModelT** @target_Target
	%166 = getelementptr %target.ModelT* %165, i32 0, i32 6
	%167 = getelementptr %target.SizeAlign* %166, i32 0, i32 1
	%168 = load i8* %167
	%169 = zext i8 %168 to i32
	store i32 %169, i32* %align
	br label %L.18
L.24:
	%170 = load %target.ModelT** @target_Target
	%171 = getelementptr %target.ModelT* %170, i32 0, i32 6
	%172 = getelementptr %target.SizeAlign* %171, i32 0, i32 0
	%173 = load i8* %172
	%174 = zext i8 %173 to i32
	%175 = load %type.TypeNode** %t
	%176 = getelementptr %type.TypeNode* %175, i32 0, i32 9
	store i32 %174, i32* %176
	%177 = load %target.ModelT** @target_Target
	%178 = getelementptr %target.ModelT* %177, i32 0, i32 6
	%179 = getelementptr %target.SizeAlign* %178, i32 0, i32 0
	%180 = load i8* %179
	%181 = zext i8 %180 to i32
	%182 = load %type.TypeNode** %t
	%183 = getelementptr %type.TypeNode* %182, i32 0, i32 10
	store i32 %181, i32* %183
	%184 = load %target.ModelT** @target_Target
	%185 = getelementptr %target.ModelT* %184, i32 0, i32 6
	%186 = getelementptr %target.SizeAlign* %185, i32 0, i32 1
	%187 = load i8* %186
	%188 = zext i8 %187 to i32
	store i32 %188, i32* %align
	br label %L.18
L.25:
	store i16 0, i16* %index
	store i32 0, i32* %offs
	store i32 0, i32* %align
	store %symb.SymbNode* null, %symb.SymbNode** %prev
	%189 = load %type.TypeNode** %t
	%190 = getelementptr %type.TypeNode* %189, i32 0, i32 4
	%191 = load %symb.SymbNode** %190
	%192 = bitcast %symb.SymbNode* %191 to %symb.SymbNode*
	store %symb.SymbNode* %192, %symb.SymbNode** %f
	br label %L.42
L.42:
	%193 = load %symb.SymbNode** %f
	%194 = icmp ne %symb.SymbNode* %193, null
	%195 = xor i1 %194, true
	br i1 %195, label %L.43, label %L.44
L.44:
	%196 = load %symb.SymbNode** %f
	%197 = getelementptr %symb.SymbNode* %196, i32 0, i32 1
	%198 = load %type.TypeNode** %197
	%199 = icmp ne %type.TypeNode* %198, null
	br i1 %199, label %L.46, label %L.45
L.46:
	%200 = load %symb.SymbNode** %f
	%201 = getelementptr %symb.SymbNode* %200, i32 0, i32 1
	%202 = load %type.TypeNode** %201
	call void @type_Final(%type.TypeNode* %202)
	%203 = load %symb.SymbNode** %f
	%204 = getelementptr %symb.SymbNode* %203, i32 0, i32 1
	%205 = load %type.TypeNode** %204
	%206 = getelementptr %type.TypeNode* %205, i32 0, i32 25
	%207 = load i8* %206
	%208 = icmp ne i8 %207, 0
	br i1 %208, label %L.48, label %L.47
L.48:
	%209 = load %symb.SymbNode** %f
	%210 = getelementptr %symb.SymbNode* %209, i32 0, i32 0
	%211 = load %symb.SymbNode** %210
	%212 = icmp ne %symb.SymbNode* %211, null
	br i1 %212, label %L.50, label %L.51
L.50:
	%213 = load %symb.SymbNode** %f
	%214 = getelementptr %symb.SymbNode* %213, i32 0, i32 22
	%215 = getelementptr [0 x i8]* %214
	%216 = bitcast [0 x i8]* %215 to [0 x i8]*
	call void @lex_ErrorI(i8 75, [0 x i8]* %216)
	br label %L.49
L.51:
	%217 = load %type.TypeNode** %t
	%218 = getelementptr %type.TypeNode* %217, i32 0, i32 25
	store i8 1, i8* %218
	br label %L.49
L.49:
	br label %L.47
L.47:
	%219 = load %symb.SymbNode** %f
	%220 = getelementptr %symb.SymbNode* %219, i32 0, i32 9
	%221 = load i64* %220
	%222 = trunc i64 %221 to i32
	store i32 %222, i32* %atoffs
	%223 = load %type.TypeNode** %t
	%224 = getelementptr %type.TypeNode* %223, i32 0, i32 21
	%225 = load i8* %224
	%226 = icmp ne i8 %225, 0
	br i1 %226, label %L.53, label %L.54
L.53:
	%227 = load %symb.SymbNode** %f
	%228 = getelementptr %symb.SymbNode* %227, i32 0, i32 1
	%229 = load %type.TypeNode** %228
	%230 = call %type.TypeNode* @type_ForcePacked(%type.TypeNode* %229)
	%231 = load %symb.SymbNode** %f
	%232 = getelementptr %symb.SymbNode* %231, i32 0, i32 1
	store %type.TypeNode* %230, %type.TypeNode** %232
	%233 = load i32* %atoffs
	%234 = icmp ne i32 %233, 0
	br i1 %234, label %L.55, label %L.56
L.55:
	%235 = load i32* %atoffs
	%236 = load i32* %offs
	%237 = icmp ult i32 %235, %236
	br label %L.56
L.56:
	%238 = phi i1 [ false, %L.53 ], [ %237, %L.55 ]
	br i1 %238, label %L.58, label %L.59
L.58:
	call void @lex_Error(i8 84)
	br label %L.57
L.59:
	%239 = load i32* %atoffs
	%240 = load i32* %offs
	%241 = icmp ugt i32 %239, %240
	br i1 %241, label %L.61, label %L.60
L.61:
	%242 = load %symb.SymbNode** %prev
	%243 = load i32* %atoffs
	%244 = load i32* %offs
	%245 = sub i32 %243, %244
	%246 = load i16* %index
	%247 = call i16 @type_BitFieldPad(%symb.SymbNode* %242, i32 %245, i16 %246)
	store i16 %247, i16* %index
	%248 = load i32* %atoffs
	store i32 %248, i32* %offs
	br label %L.60
L.60:
	br label %L.57
L.57:
	%249 = load i32* %offs
	%250 = load %symb.SymbNode** %f
	%251 = getelementptr %symb.SymbNode* %250, i32 0, i32 1
	%252 = load %type.TypeNode** %251
	%253 = getelementptr %type.TypeNode* %252, i32 0, i32 9
	%254 = load i32* %253
	%255 = add i32 %249, %254
	store i32 %255, i32* %offs
	br label %L.52
L.54:
	%256 = load %symb.SymbNode** %f
	%257 = getelementptr %symb.SymbNode* %256, i32 0, i32 1
	%258 = load %type.TypeNode** %257
	%259 = getelementptr %type.TypeNode* %258, i32 0, i32 11
	%260 = load i32* %259
	store i32 %260, i32* %falign
	%261 = load %type.TypeNode** %t
	%262 = getelementptr %type.TypeNode* %261, i32 0, i32 20
	%263 = load i8* %262
	%264 = icmp ne i8 %263, 0
	br i1 %264, label %L.62, label %L.63
L.62:
	%265 = load %type.TypeNode** %t
	%266 = getelementptr %type.TypeNode* %265, i32 0, i32 11
	%267 = load i32* %266
	%268 = load i32* %falign
	%269 = icmp ult i32 %267, %268
	br label %L.63
L.63:
	%270 = phi i1 [ false, %L.54 ], [ %269, %L.62 ]
	br i1 %270, label %L.65, label %L.64
L.65:
	%271 = load %symb.SymbNode** %f
	%272 = getelementptr %symb.SymbNode* %271, i32 0, i32 1
	%273 = load %type.TypeNode** %272
	%274 = load %type.TypeNode** %t
	%275 = getelementptr %type.TypeNode* %274, i32 0, i32 11
	%276 = load i32* %275
	%277 = call %type.TypeNode* @type_ForceUnAligned(%type.TypeNode* %273, i32 %276)
	%278 = load %symb.SymbNode** %f
	%279 = getelementptr %symb.SymbNode* %278, i32 0, i32 1
	store %type.TypeNode* %277, %type.TypeNode** %279
	br label %L.64
L.64:
	%280 = load %symb.SymbNode** %f
	%281 = getelementptr %symb.SymbNode* %280, i32 0, i32 1
	%282 = load %type.TypeNode** %281
	%283 = getelementptr %type.TypeNode* %282, i32 0, i32 22
	%284 = load i8* %283
	%285 = icmp ne i8 %284, 0
	br i1 %285, label %L.67, label %L.68
L.67:
	%286 = load %type.TypeNode** %t
	%287 = getelementptr %type.TypeNode* %286, i32 0, i32 24
	store i8 1, i8* %287
	br label %L.66
L.68:
	%288 = load i32* %atoffs
	%289 = icmp ne i32 %288, 0
	br i1 %289, label %L.70, label %L.71
L.70:
	%290 = load i32* %atoffs
	%291 = load %target.ModelT** @target_Target
	%292 = getelementptr %target.ModelT* %291, i32 0, i32 2
	%293 = load i8* %292
	%294 = zext i8 %293 to i32
	%295 = mul i32 %290, %294
	store i32 %295, i32* %atoffs
	%296 = load i32* %atoffs
	%297 = icmp ne i32 %296, 0
	br i1 %297, label %L.72, label %L.73
L.72:
	%298 = load i32* %atoffs
	%299 = load i32* %offs
	%300 = icmp ult i32 %298, %299
	br label %L.73
L.73:
	%301 = phi i1 [ false, %L.70 ], [ %300, %L.72 ]
	br i1 %301, label %L.75, label %L.76
L.75:
	call void @lex_Error(i8 84)
	br label %L.74
L.76:
	%302 = load i32* %atoffs
	%303 = load i32* %offs
	%304 = icmp ugt i32 %302, %303
	br i1 %304, label %L.78, label %L.77
L.78:
	%305 = load %symb.SymbNode** %prev
	%306 = load i32* %atoffs
	%307 = load i32* %offs
	%308 = sub i32 %306, %307
	%309 = load %target.ModelT** @target_Target
	%310 = getelementptr %target.ModelT* %309, i32 0, i32 2
	%311 = load i8* %310
	%312 = zext i8 %311 to i32
	%313 = udiv i32 %308, %312
	%314 = load i16* %index
	%315 = call i16 @type_FieldPad(%symb.SymbNode* %305, i32 %313, i16 %314)
	store i16 %315, i16* %index
	%316 = load i32* %atoffs
	store i32 %316, i32* %offs
	br label %L.77
L.77:
	br label %L.74
L.74:
	br label %L.69
L.71:
	%317 = load i32* %falign
	%318 = icmp eq i32 %317, 0
	br i1 %318, label %L.80, label %L.81
L.80:
	%319 = getelementptr [20 x i8]* @S.536
	%320 = bitcast [20 x i8]* %319 to [0 x i8]*
	call void @lex_ErrorS(i8 86, [0 x i8]* %320)
	br label %L.79
L.81:
	%321 = load i32* %offs
	%322 = load i32* %falign
	%323 = urem i32 %321, %322
	store i32 %323, i32* %mod
	%324 = load i32* %mod
	%325 = icmp ne i32 %324, 0
	br i1 %325, label %L.83, label %L.82
L.83:
	%326 = load %symb.SymbNode** %prev
	%327 = load i32* %falign
	%328 = load i32* %mod
	%329 = sub i32 %327, %328
	%330 = load %target.ModelT** @target_Target
	%331 = getelementptr %target.ModelT* %330, i32 0, i32 2
	%332 = load i8* %331
	%333 = zext i8 %332 to i32
	%334 = udiv i32 %329, %333
	%335 = load i16* %index
	%336 = call i16 @type_FieldPad(%symb.SymbNode* %326, i32 %334, i16 %335)
	store i16 %336, i16* %index
	%337 = load i32* %offs
	%338 = load i32* %falign
	%339 = load i32* %mod
	%340 = sub i32 %338, %339
	%341 = add i32 %337, %340
	store i32 %341, i32* %offs
	br label %L.82
L.82:
	br label %L.79
L.79:
	br label %L.69
L.69:
	br label %L.66
L.66:
	%342 = load i32* %offs
	%343 = load %symb.SymbNode** %f
	%344 = getelementptr %symb.SymbNode* %343, i32 0, i32 1
	%345 = load %type.TypeNode** %344
	%346 = getelementptr %type.TypeNode* %345, i32 0, i32 10
	%347 = load i32* %346
	%348 = add i32 %342, %347
	store i32 %348, i32* %offs
	%349 = load i32* %falign
	%350 = load i32* %align
	%351 = icmp ugt i32 %349, %350
	br i1 %351, label %L.85, label %L.84
L.85:
	%352 = load i32* %falign
	store i32 %352, i32* %align
	br label %L.84
L.84:
	br label %L.52
L.52:
	br label %L.45
L.45:
	%353 = load i16* %index
	%354 = load %symb.SymbNode** %f
	%355 = getelementptr %symb.SymbNode* %354, i32 0, i32 10
	store i16 %353, i16* %355
	%356 = load i16* %index
	%357 = add i16 %356, 1
	store i16 %357, i16* %index
	%358 = load %symb.SymbNode** %f
	store %symb.SymbNode* %358, %symb.SymbNode** %prev
	%359 = load %symb.SymbNode** %f
	%360 = getelementptr %symb.SymbNode* %359, i32 0, i32 0
	%361 = load %symb.SymbNode** %360
	%362 = bitcast %symb.SymbNode* %361 to %symb.SymbNode*
	store %symb.SymbNode* %362, %symb.SymbNode** %f
	br label %L.42
L.43:
	%363 = load %type.TypeNode** %t
	%364 = getelementptr %type.TypeNode* %363, i32 0, i32 9
	%365 = load i32* %364
	%366 = icmp eq i32 %365, 0
	br i1 %366, label %L.87, label %L.88
L.87:
	%367 = load i32* %offs
	%368 = load %type.TypeNode** %t
	%369 = getelementptr %type.TypeNode* %368, i32 0, i32 9
	store i32 %367, i32* %369
	br label %L.86
L.88:
	%370 = load %type.TypeNode** %t
	%371 = getelementptr %type.TypeNode* %370, i32 0, i32 9
	%372 = load i32* %371
	%373 = load i32* %offs
	%374 = icmp ult i32 %372, %373
	br i1 %374, label %L.90, label %L.91
L.90:
	call void @lex_Error(i8 83)
	br label %L.89
L.91:
	%375 = load %type.TypeNode** %t
	%376 = getelementptr %type.TypeNode* %375, i32 0, i32 21
	%377 = load i8* %376
	%378 = icmp ne i8 %377, 0
	%379 = xor i1 %378, true
	br i1 %379, label %L.92, label %L.93
L.92:
	%380 = load %type.TypeNode** %t
	%381 = getelementptr %type.TypeNode* %380, i32 0, i32 9
	%382 = load i32* %381
	%383 = load i32* %offs
	%384 = icmp ugt i32 %382, %383
	br label %L.93
L.93:
	%385 = phi i1 [ false, %L.91 ], [ %384, %L.92 ]
	br i1 %385, label %L.95, label %L.94
L.95:
	%386 = load %symb.SymbNode** %prev
	%387 = load %type.TypeNode** %t
	%388 = getelementptr %type.TypeNode* %387, i32 0, i32 9
	%389 = load i32* %388
	%390 = load i32* %offs
	%391 = sub i32 %389, %390
	%392 = load %target.ModelT** @target_Target
	%393 = getelementptr %target.ModelT* %392, i32 0, i32 2
	%394 = load i8* %393
	%395 = zext i8 %394 to i32
	%396 = udiv i32 %391, %395
	%397 = load i16* %index
	%398 = call i16 @type_FieldPad(%symb.SymbNode* %386, i32 %396, i16 %397)
	store i16 %398, i16* %index
	br label %L.94
L.94:
	br label %L.89
L.89:
	br label %L.86
L.86:
	%399 = load %type.TypeNode** %t
	%400 = getelementptr %type.TypeNode* %399, i32 0, i32 10
	%401 = load i32* %400
	%402 = icmp eq i32 %401, 0
	br i1 %402, label %L.97, label %L.96
L.97:
	%403 = load i32* %offs
	%404 = load %target.ModelT** @target_Target
	%405 = getelementptr %target.ModelT* %404, i32 0, i32 3
	%406 = load i8* %405
	%407 = zext i8 %406 to i32
	%408 = icmp ule i32 %403, %407
	br i1 %408, label %L.98, label %L.99
L.98:
	%409 = load %type.TypeNode** %t
	%410 = getelementptr %type.TypeNode* %409, i32 0, i32 23
	%411 = load i8* %410
	%412 = icmp ne i8 %411, 0
	%413 = xor i1 %412, true
	br label %L.99
L.99:
	%414 = phi i1 [ false, %L.97 ], [ %413, %L.98 ]
	br i1 %414, label %L.101, label %L.102
L.101:
	%415 = load i32* %offs
	%416 = call i32 @target_isize(i32 %415)
	%417 = load %type.TypeNode** %t
	%418 = getelementptr %type.TypeNode* %417, i32 0, i32 10
	store i32 %416, i32* %418
	br label %L.100
L.102:
	%419 = load i32* %offs
	%420 = load %type.TypeNode** %t
	%421 = getelementptr %type.TypeNode* %420, i32 0, i32 10
	store i32 %419, i32* %421
	br label %L.100
L.100:
	br label %L.96
L.96:
	%422 = load i32* %align
	%423 = icmp ugt i32 %422, 0
	br i1 %423, label %L.104, label %L.105
L.104:
	%424 = load %type.TypeNode** %t
	%425 = getelementptr %type.TypeNode* %424, i32 0, i32 10
	%426 = load i32* %425
	%427 = load i32* %align
	%428 = urem i32 %426, %427
	store i32 %428, i32* %mod
	%429 = load i32* %mod
	%430 = icmp ne i32 %429, 0
	br i1 %430, label %L.106, label %L.107
L.106:
	%431 = load %type.TypeNode** %t
	%432 = getelementptr %type.TypeNode* %431, i32 0, i32 23
	%433 = load i8* %432
	%434 = icmp ne i8 %433, 0
	%435 = xor i1 %434, true
	br label %L.107
L.107:
	%436 = phi i1 [ false, %L.104 ], [ %435, %L.106 ]
	br i1 %436, label %L.109, label %L.108
L.109:
	%437 = load %type.TypeNode** %t
	%438 = getelementptr %type.TypeNode* %437, i32 0, i32 10
	%439 = load i32* %438
	%440 = load i32* %align
	%441 = load i32* %mod
	%442 = sub i32 %440, %441
	%443 = add i32 %439, %442
	store i32 %443, i32* %438
	br label %L.108
L.108:
	br label %L.103
L.105:
	%444 = load %type.TypeNode** %t
	%445 = getelementptr %type.TypeNode* %444, i32 0, i32 23
	%446 = load i8* %445
	%447 = icmp ne i8 %446, 0
	br i1 %447, label %L.111, label %L.112
L.111:
	%448 = load %type.TypeNode** %t
	%449 = getelementptr %type.TypeNode* %448, i32 0, i32 21
	%450 = load i8* %449
	%451 = icmp ne i8 %450, 0
	br i1 %451, label %L.114, label %L.115
L.114:
	store i32 1, i32* %align
	br label %L.113
L.115:
	%452 = load %target.ModelT** @target_Target
	%453 = getelementptr %target.ModelT* %452, i32 0, i32 2
	%454 = load i8* %453
	%455 = zext i8 %454 to i32
	store i32 %455, i32* %align
	br label %L.113
L.113:
	br label %L.110
L.112:
	%456 = load %type.TypeNode** %t
	%457 = getelementptr %type.TypeNode* %456, i32 0, i32 9
	%458 = load i32* %457
	%459 = call i32 @target_ialign(i32 %458)
	store i32 %459, i32* %align
	br label %L.110
L.110:
	br label %L.103
L.103:
	%460 = load %type.TypeNode** %t
	%461 = getelementptr %type.TypeNode* %460, i32 0, i32 21
	%462 = load i8* %461
	%463 = icmp ne i8 %462, 0
	br i1 %463, label %L.116, label %L.117
L.116:
	%464 = load %type.TypeNode** %t
	%465 = getelementptr %type.TypeNode* %464, i32 0, i32 9
	%466 = load i32* %465
	%467 = call i32 @target_isize(i32 %466)
	%468 = icmp eq i32 %467, 0
	br label %L.117
L.117:
	%469 = phi i1 [ false, %L.103 ], [ %468, %L.116 ]
	br i1 %469, label %L.119, label %L.118
L.119:
	call void @lex_Error(i8 79)
	br label %L.118
L.118:
	br label %L.18
L.26:
	%470 = load %type.TypeNode** %t
	%471 = getelementptr %type.TypeNode* %470, i32 0, i32 0
	%472 = load %type.TypeNode** %471
	%473 = icmp ne %type.TypeNode* %472, null
	br i1 %473, label %L.121, label %L.120
L.121:
	%474 = load %type.TypeNode** %t
	%475 = getelementptr %type.TypeNode* %474, i32 0, i32 0
	%476 = load %type.TypeNode** %475
	%477 = bitcast %type.TypeNode* %476 to %type.TypeNode*
	call void @type_Final(%type.TypeNode* %477)
	%478 = load %type.TypeNode** %t
	%479 = getelementptr %type.TypeNode* %478, i32 0, i32 21
	%480 = load i8* %479
	%481 = icmp ne i8 %480, 0
	br i1 %481, label %L.123, label %L.122
L.123:
	%482 = load %type.TypeNode** %t
	%483 = getelementptr %type.TypeNode* %482, i32 0, i32 0
	%484 = load %type.TypeNode** %483
	%485 = bitcast %type.TypeNode* %484 to %type.TypeNode*
	%486 = call %type.TypeNode* @type_ForcePacked(%type.TypeNode* %485)
	%487 = bitcast %type.TypeNode* %486 to %type.TypeNode*
	%488 = load %type.TypeNode** %t
	%489 = getelementptr %type.TypeNode* %488, i32 0, i32 0
	store %type.TypeNode* %487, %type.TypeNode** %489
	br label %L.122
L.122:
	%490 = load %type.TypeNode** %t
	%491 = getelementptr %type.TypeNode* %490, i32 0, i32 9
	%492 = load i32* %491
	%493 = icmp eq i32 %492, 0
	br i1 %493, label %L.125, label %L.124
L.125:
	%494 = load %type.TypeNode** %t
	%495 = getelementptr %type.TypeNode* %494, i32 0, i32 0
	%496 = load %type.TypeNode** %495
	%497 = getelementptr %type.TypeNode* %496, i32 0, i32 9
	%498 = load i32* %497
	%499 = load %type.TypeNode** %t
	%500 = call i32 @type_TypeNode_Span(%type.TypeNode* %499)
	%501 = mul i32 %498, %500
	%502 = load %type.TypeNode** %t
	%503 = getelementptr %type.TypeNode* %502, i32 0, i32 9
	store i32 %501, i32* %503
	br label %L.124
L.124:
	%504 = load %type.TypeNode** %t
	%505 = getelementptr %type.TypeNode* %504, i32 0, i32 10
	%506 = load i32* %505
	%507 = icmp eq i32 %506, 0
	br i1 %507, label %L.127, label %L.126
L.127:
	%508 = load %type.TypeNode** %t
	%509 = getelementptr %type.TypeNode* %508, i32 0, i32 9
	%510 = load i32* %509
	%511 = load %type.TypeNode** %t
	%512 = getelementptr %type.TypeNode* %511, i32 0, i32 10
	store i32 %510, i32* %512
	br label %L.126
L.126:
	%513 = load %type.TypeNode** %t
	%514 = getelementptr %type.TypeNode* %513, i32 0, i32 0
	%515 = load %type.TypeNode** %514
	%516 = getelementptr %type.TypeNode* %515, i32 0, i32 10
	%517 = load i32* %516
	%518 = load %type.TypeNode** %t
	%519 = getelementptr %type.TypeNode* %518, i32 0, i32 0
	%520 = load %type.TypeNode** %519
	%521 = getelementptr %type.TypeNode* %520, i32 0, i32 11
	%522 = load i32* %521
	%523 = icmp ult i32 %517, %522
	br i1 %523, label %L.129, label %L.128
L.129:
	%524 = getelementptr [23 x i8]* @S.537
	%525 = bitcast [23 x i8]* %524 to [0 x i8]*
	call void @lex_ErrorS(i8 0, [0 x i8]* %525)
	%526 = load %type.TypeNode** %t
	%527 = getelementptr %type.TypeNode* %526, i32 0, i32 0
	%528 = load %type.TypeNode** %527
	%529 = bitcast %type.TypeNode* %528 to %type.TypeNode*
	call void @type_DumpT(%type.TypeNode* %529, i8 1)
	call void @sys_fildes_nl(i32 2)
	br label %L.128
L.128:
	%530 = load %type.TypeNode** %t
	%531 = getelementptr %type.TypeNode* %530, i32 0, i32 21
	%532 = load i8* %531
	%533 = icmp ne i8 %532, 0
	%534 = xor i1 %533, true
	br i1 %534, label %L.131, label %L.132
L.131:
	%535 = load %type.TypeNode** %t
	%536 = getelementptr %type.TypeNode* %535, i32 0, i32 0
	%537 = load %type.TypeNode** %536
	%538 = getelementptr %type.TypeNode* %537, i32 0, i32 11
	%539 = load i32* %538
	store i32 %539, i32* %align
	br label %L.130
L.132:
	%540 = load %type.TypeNode** %t
	%541 = getelementptr %type.TypeNode* %540, i32 0, i32 9
	%542 = load i32* %541
	%543 = call i32 @target_ialign(i32 %542)
	store i32 %543, i32* %align
	br label %L.130
L.130:
	br label %L.120
L.120:
	%544 = load %type.TypeNode** %t
	%545 = getelementptr %type.TypeNode* %544, i32 0, i32 21
	%546 = load i8* %545
	%547 = icmp ne i8 %546, 0
	br i1 %547, label %L.133, label %L.134
L.133:
	%548 = load %type.TypeNode** %t
	%549 = getelementptr %type.TypeNode* %548, i32 0, i32 9
	%550 = load i32* %549
	%551 = call i32 @target_isize(i32 %550)
	%552 = icmp eq i32 %551, 0
	br label %L.134
L.134:
	%553 = phi i1 [ false, %L.120 ], [ %552, %L.133 ]
	br i1 %553, label %L.136, label %L.135
L.136:
	call void @lex_Error(i8 80)
	br label %L.135
L.135:
	br label %L.18
L.17:
	br label %L.18
L.18:
	%554 = load %type.TypeNode** %t
	%555 = getelementptr %type.TypeNode* %554, i32 0, i32 20
	%556 = load i8* %555
	%557 = icmp ne i8 %556, 0
	br i1 %557, label %L.138, label %L.139
L.138:
	%558 = load %type.TypeNode** %t
	%559 = getelementptr %type.TypeNode* %558, i32 0, i32 11
	%560 = load i32* %559
	%561 = load i32* %align
	%562 = icmp ult i32 %560, %561
	br i1 %562, label %L.141, label %L.140
L.141:
	%563 = load %type.TypeNode** %t
	%564 = getelementptr %type.TypeNode* %563, i32 0, i32 22
	store i8 1, i8* %564
	br label %L.140
L.140:
	br label %L.137
L.139:
	%565 = load i32* %align
	%566 = load %type.TypeNode** %t
	%567 = getelementptr %type.TypeNode* %566, i32 0, i32 11
	store i32 %565, i32* %567
	br label %L.137
L.137:
	%568 = load %type.TypeNode** %t
	%569 = getelementptr %type.TypeNode* %568, i32 0, i32 30
	store i8 1, i8* %569
	br label %L.3
L.3:
	br label %return
return:
	ret void
}
define internal %type.TypeNode* @type_Enum(%type.TypeNode* %bt$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%bt = alloca %type.TypeNode*
	store %type.TypeNode* %bt$, %type.TypeNode** %bt
	%tok = alloca i8
	%t = alloca %type.TypeNode*
	%vn = alloca %symb.SymbNode*
	%pvn = alloca %symb.SymbNode*
	%vnl = alloca %symb.SymbNode*
	%vv = alloca %ast.AstNode*
	%v = alloca i32
	%vmax = alloca i32
	%0 = call i8 @lex_Next()
	store i8 %0, i8* %tok
	%1 = call %type.TypeNode* @type_New(i8 1)
	store %type.TypeNode* %1, %type.TypeNode** %t
	store i32 0, i32* %v
	store i32 0, i32* %vmax
	store %symb.SymbNode* null, %symb.SymbNode** %pvn
	%2 = load %type.TypeNode** %bt
	%3 = bitcast %type.TypeNode* %2 to %type.TypeNode*
	%4 = load %type.TypeNode** %t
	%5 = getelementptr %type.TypeNode* %4, i32 0, i32 0
	store %type.TypeNode* %3, %type.TypeNode** %5
	%6 = load %type.TypeNode** %bt
	%7 = icmp ne %type.TypeNode* %6, null
	br i1 %7, label %L.2, label %L.1
L.2:
	%vb = alloca %symb.SymbNode*
	%8 = load %type.TypeNode** %bt
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 14
	%10 = load i8* %9
	%11 = icmp eq i8 %10, 1
	br i1 %11, label %L.4, label %L.5
L.4:
	%12 = load %type.TypeNode** %bt
	%13 = getelementptr %type.TypeNode* %12, i32 0, i32 4
	%14 = load %symb.SymbNode** %13
	%15 = bitcast %symb.SymbNode* %14 to %symb.SymbNode*
	store %symb.SymbNode* %15, %symb.SymbNode** %vb
	br label %L.6
L.6:
	%16 = load %symb.SymbNode** %vb
	%17 = icmp ne %symb.SymbNode* %16, null
	%18 = xor i1 %17, true
	br i1 %18, label %L.7, label %L.8
L.8:
	%19 = load %symb.SymbNode** %vb
	%20 = getelementptr %symb.SymbNode* %19, i32 0, i32 22
	%21 = getelementptr [0 x i8]* %20
	%22 = bitcast [0 x i8]* %21 to [0 x i8]*
	%23 = call %symb.SymbNode* @symb_New(i8 1, [0 x i8]* %22, i8 2)
	store %symb.SymbNode* %23, %symb.SymbNode** %vn
	%24 = load %symb.SymbNode** %pvn
	%25 = icmp ne %symb.SymbNode* %24, null
	br i1 %25, label %L.10, label %L.11
L.10:
	%26 = load %symb.SymbNode** %vn
	%27 = bitcast %symb.SymbNode* %26 to %symb.SymbNode*
	%28 = load %symb.SymbNode** %pvn
	%29 = getelementptr %symb.SymbNode* %28, i32 0, i32 0
	store %symb.SymbNode* %27, %symb.SymbNode** %29
	br label %L.9
L.11:
	%30 = load %symb.SymbNode** %vn
	%31 = bitcast %symb.SymbNode* %30 to %symb.SymbNode*
	%32 = load %type.TypeNode** %t
	%33 = getelementptr %type.TypeNode* %32, i32 0, i32 4
	store %symb.SymbNode* %31, %symb.SymbNode** %33
	br label %L.9
L.9:
	%34 = load %symb.SymbNode** %vn
	store %symb.SymbNode* %34, %symb.SymbNode** %pvn
	%35 = load %symb.SymbNode** %vb
	%36 = getelementptr %symb.SymbNode* %35, i32 0, i32 8
	%37 = load %ast.AstNode** %36
	%38 = load %symb.SymbNode** %vn
	%39 = getelementptr %symb.SymbNode* %38, i32 0, i32 8
	store %ast.AstNode* %37, %ast.AstNode** %39
	%40 = load %symb.SymbNode** %vb
	%41 = getelementptr %symb.SymbNode* %40, i32 0, i32 8
	%42 = load %ast.AstNode** %41
	%43 = getelementptr %ast.AstNode* %42, i32 0, i32 10
	%44 = load i64* %43
	%45 = trunc i64 %44 to i32
	store i32 %45, i32* %v
	%46 = load i32* %v
	%47 = load i32* %vmax
	%48 = icmp ugt i32 %46, %47
	br i1 %48, label %L.13, label %L.12
L.13:
	%49 = load i32* %v
	store i32 %49, i32* %vmax
	br label %L.12
L.12:
	%50 = load %symb.SymbNode** %vb
	%51 = getelementptr %symb.SymbNode* %50, i32 0, i32 0
	%52 = load %symb.SymbNode** %51
	%53 = bitcast %symb.SymbNode* %52 to %symb.SymbNode*
	store %symb.SymbNode* %53, %symb.SymbNode** %vb
	br label %L.6
L.7:
	%54 = load i32* %v
	%55 = add i32 %54, 1
	store i32 %55, i32* %v
	br label %L.3
L.5:
	call void @lex_Error(i8 66)
	br label %L.3
L.3:
	br label %L.1
L.1:
	br label %L.14
L.14:
	store %symb.SymbNode* null, %symb.SymbNode** %vnl
	%56 = load i8* %tok
	%57 = icmp eq i8 %56, 32
	br i1 %57, label %L.17, label %L.18
L.17:
	%58 = call i8 @lex_Next()
	store i8 %58, i8* %tok
	br label %L.19
L.19:
	%59 = load i8* %tok
	%60 = icmp eq i8 %59, 41
	br i1 %60, label %L.22, label %L.23
L.22:
	%61 = load %type.TypeNode** %t
	%62 = getelementptr %type.TypeNode* %61, i32 0, i32 4
	%63 = load %symb.SymbNode** %62
	%64 = bitcast %symb.SymbNode* %63 to %symb.SymbNode*
	%65 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%66 = call i8 @symb_IsUniqueLocal(%symb.SymbNode* %64, [0 x i8]* %65)
	%67 = icmp ne i8 %66, 0
	%68 = xor i1 %67, true
	br i1 %68, label %L.25, label %L.24
L.25:
	%69 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 20, [0 x i8]* %69)
	br label %L.24
L.24:
	%70 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%71 = call %symb.SymbNode* @symb_New(i8 1, [0 x i8]* %70, i8 2)
	store %symb.SymbNode* %71, %symb.SymbNode** %vn
	%72 = load %symb.SymbNode** %vnl
	%73 = bitcast %symb.SymbNode* %72 to %symb.SymbNode*
	%74 = load %symb.SymbNode** %vn
	%75 = getelementptr %symb.SymbNode* %74, i32 0, i32 0
	store %symb.SymbNode* %73, %symb.SymbNode** %75
	%76 = load %symb.SymbNode** %vn
	store %symb.SymbNode* %76, %symb.SymbNode** %vnl
	%77 = call i8 @lex_Next()
	store i8 %77, i8* %tok
	br label %L.21
L.23:
	call void @lex_Error(i8 18)
	br label %L.21
L.21:
	%78 = load i8* %tok
	%79 = icmp eq i8 %78, 33
	br i1 %79, label %L.20, label %L.26
L.26:
	%80 = call i8 @lex_Expect(i8 5)
	store i8 %80, i8* %tok
	%81 = load i8* %tok
	%82 = icmp eq i8 %81, 33
	br i1 %82, label %L.20, label %L.27
L.27:
	br label %L.19
L.20:
	%83 = call i8 @lex_Expect(i8 33)
	store i8 %83, i8* %tok
	br label %L.16
L.18:
	%84 = load i8* %tok
	%85 = icmp eq i8 %84, 41
	br i1 %85, label %L.29, label %L.30
L.29:
	%86 = load %type.TypeNode** %t
	%87 = getelementptr %type.TypeNode* %86, i32 0, i32 4
	%88 = load %symb.SymbNode** %87
	%89 = bitcast %symb.SymbNode* %88 to %symb.SymbNode*
	%90 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%91 = call i8 @symb_IsUniqueLocal(%symb.SymbNode* %89, [0 x i8]* %90)
	%92 = icmp ne i8 %91, 0
	%93 = xor i1 %92, true
	br i1 %93, label %L.32, label %L.31
L.32:
	%94 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 20, [0 x i8]* %94)
	br label %L.31
L.31:
	%95 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%96 = call %symb.SymbNode* @symb_New(i8 1, [0 x i8]* %95, i8 2)
	store %symb.SymbNode* %96, %symb.SymbNode** %vnl
	%97 = call i8 @lex_Next()
	store i8 %97, i8* %tok
	br label %L.28
L.30:
	call void @lex_Error(i8 18)
	br label %L.28
L.28:
	br label %L.16
L.16:
	%98 = load i8* %tok
	%99 = icmp eq i8 %98, 9
	br i1 %99, label %L.34, label %L.35
L.34:
	%100 = call i8 @lex_Next()
	store i8 %100, i8* %tok
	%101 = load %type.TypeNode** @type_wordtype
	%102 = call %ast.AstNode* @expr_Const(%type.TypeNode* %101)
	store %ast.AstNode* %102, %ast.AstNode** %vv
	%103 = load %type.TypeNode** %t
	%104 = load %ast.AstNode** %vv
	%105 = getelementptr %ast.AstNode* %104, i32 0, i32 8
	store %type.TypeNode* %103, %type.TypeNode** %105
	%106 = load %ast.AstNode** %vv
	%107 = getelementptr %ast.AstNode* %106, i32 0, i32 10
	%108 = load i64* %107
	%109 = trunc i64 %108 to i32
	store i32 %109, i32* %v
	%110 = load i8* @lex_Token
	store i8 %110, i8* %tok
	br label %L.33
L.35:
	%111 = load %type.TypeNode** %t
	%112 = load i32* %v
	%113 = zext i32 %112 to i64
	%114 = call %ast.AstNode* @ast_Const(%type.TypeNode* %111, i64 %113)
	store %ast.AstNode* %114, %ast.AstNode** %vv
	br label %L.33
L.33:
	br label %L.36
L.36:
	%115 = load %symb.SymbNode** %vnl
	%116 = icmp ne %symb.SymbNode* %115, null
	%117 = xor i1 %116, true
	br i1 %117, label %L.37, label %L.38
L.38:
	%118 = load %ast.AstNode** %vv
	%119 = bitcast %ast.AstNode* %118 to %ast.AstNode*
	%120 = load %symb.SymbNode** %vnl
	%121 = getelementptr %symb.SymbNode* %120, i32 0, i32 8
	store %ast.AstNode* %119, %ast.AstNode** %121
	%122 = load %symb.SymbNode** %pvn
	%123 = icmp ne %symb.SymbNode* %122, null
	br i1 %123, label %L.40, label %L.41
L.40:
	%124 = load %symb.SymbNode** %vnl
	%125 = bitcast %symb.SymbNode* %124 to %symb.SymbNode*
	%126 = load %symb.SymbNode** %pvn
	%127 = getelementptr %symb.SymbNode* %126, i32 0, i32 0
	store %symb.SymbNode* %125, %symb.SymbNode** %127
	br label %L.39
L.41:
	%128 = load %symb.SymbNode** %vnl
	%129 = bitcast %symb.SymbNode* %128 to %symb.SymbNode*
	%130 = load %type.TypeNode** %t
	%131 = getelementptr %type.TypeNode* %130, i32 0, i32 4
	store %symb.SymbNode* %129, %symb.SymbNode** %131
	br label %L.39
L.39:
	%132 = load %symb.SymbNode** %vnl
	store %symb.SymbNode* %132, %symb.SymbNode** %pvn
	%133 = load %symb.SymbNode** %vnl
	%134 = getelementptr %symb.SymbNode* %133, i32 0, i32 0
	%135 = load %symb.SymbNode** %134
	%136 = bitcast %symb.SymbNode* %135 to %symb.SymbNode*
	store %symb.SymbNode* %136, %symb.SymbNode** %vnl
	br label %L.36
L.37:
	%137 = load i32* %v
	%138 = load i32* %vmax
	%139 = icmp ugt i32 %137, %138
	br i1 %139, label %L.43, label %L.42
L.43:
	%140 = load i32* %v
	store i32 %140, i32* %vmax
	br label %L.42
L.42:
	%141 = load i8* %tok
	%142 = icmp eq i8 %141, 33
	br i1 %142, label %L.15, label %L.44
L.44:
	%143 = call i8 @lex_Expect(i8 5)
	store i8 %143, i8* %tok
	%144 = load i8* %tok
	%145 = icmp eq i8 %144, 33
	br i1 %145, label %L.15, label %L.45
L.45:
	%146 = load i32* %v
	%147 = add i32 %146, 1
	store i32 %147, i32* %v
	br label %L.14
L.15:
	%148 = call i8 @lex_Expect(i8 33)
	%149 = load %type.TypeNode** %t
	%150 = getelementptr %type.TypeNode* %149, i32 0, i32 7
	store i64 0, i64* %150
	%151 = load i32* %vmax
	%152 = zext i32 %151 to i64
	%153 = load %type.TypeNode** %t
	%154 = getelementptr %type.TypeNode* %153, i32 0, i32 8
	store i64 %152, i64* %154
	%155 = load %type.TypeNode** %t
	store %type.TypeNode* %155, %type.TypeNode** %rv.0
	br label %return
return:
	%156 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %156
}
define internal void @type_RangeEnum(%type.TypeNode* %t$, %type.TypeNode* %bt$) nounwind {
L.0:
	%t = alloca %type.TypeNode*
	%bt = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	store %type.TypeNode* %bt$, %type.TypeNode** %bt
	%vb = alloca %symb.SymbNode*
	%vn = alloca %symb.SymbNode*
	%pvn = alloca %symb.SymbNode*
	%v = alloca i32
	%vlo = alloca i32
	%vhi = alloca i32
	%0 = load %type.TypeNode** %bt
	%1 = bitcast %type.TypeNode* %0 to %type.TypeNode*
	%2 = load %type.TypeNode** %t
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 0
	store %type.TypeNode* %1, %type.TypeNode** %3
	%4 = load %type.TypeNode** %bt
	%5 = getelementptr %type.TypeNode* %4, i32 0, i32 4
	%6 = load %symb.SymbNode** %5
	%7 = bitcast %symb.SymbNode* %6 to %symb.SymbNode*
	store %symb.SymbNode* %7, %symb.SymbNode** %vb
	store %symb.SymbNode* null, %symb.SymbNode** %pvn
	%8 = load %type.TypeNode** %t
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 7
	%10 = load i64* %9
	%11 = trunc i64 %10 to i32
	store i32 %11, i32* %vlo
	br label %L.1
L.1:
	%12 = load %symb.SymbNode** %vb
	%13 = icmp ne %symb.SymbNode* %12, null
	br i1 %13, label %L.4, label %L.5
L.4:
	%14 = load i32* %vlo
	%15 = load %symb.SymbNode** %vb
	%16 = getelementptr %symb.SymbNode* %15, i32 0, i32 8
	%17 = load %ast.AstNode** %16
	%18 = getelementptr %ast.AstNode* %17, i32 0, i32 10
	%19 = load i64* %18
	%20 = trunc i64 %19 to i32
	%21 = icmp ugt i32 %14, %20
	br label %L.5
L.5:
	%22 = phi i1 [ false, %L.1 ], [ %21, %L.4 ]
	%23 = xor i1 %22, true
	br i1 %23, label %L.2, label %L.3
L.3:
	%24 = load %symb.SymbNode** %vb
	%25 = getelementptr %symb.SymbNode* %24, i32 0, i32 0
	%26 = load %symb.SymbNode** %25
	%27 = bitcast %symb.SymbNode* %26 to %symb.SymbNode*
	store %symb.SymbNode* %27, %symb.SymbNode** %vb
	br label %L.1
L.2:
	%28 = load %type.TypeNode** %t
	%29 = getelementptr %type.TypeNode* %28, i32 0, i32 8
	%30 = load i64* %29
	%31 = trunc i64 %30 to i32
	store i32 %31, i32* %vhi
	br label %L.6
L.6:
	%32 = load %symb.SymbNode** %vb
	%33 = icmp ne %symb.SymbNode* %32, null
	br i1 %33, label %L.9, label %L.10
L.9:
	%34 = load i32* %vhi
	%35 = load %symb.SymbNode** %vb
	%36 = getelementptr %symb.SymbNode* %35, i32 0, i32 8
	%37 = load %ast.AstNode** %36
	%38 = getelementptr %ast.AstNode* %37, i32 0, i32 10
	%39 = load i64* %38
	%40 = trunc i64 %39 to i32
	%41 = icmp uge i32 %34, %40
	br label %L.10
L.10:
	%42 = phi i1 [ false, %L.6 ], [ %41, %L.9 ]
	%43 = xor i1 %42, true
	br i1 %43, label %L.7, label %L.8
L.8:
	%44 = load %symb.SymbNode** %vb
	%45 = getelementptr %symb.SymbNode* %44, i32 0, i32 22
	%46 = getelementptr [0 x i8]* %45
	%47 = bitcast [0 x i8]* %46 to [0 x i8]*
	%48 = call %symb.SymbNode* @symb_New(i8 1, [0 x i8]* %47, i8 2)
	store %symb.SymbNode* %48, %symb.SymbNode** %vn
	%49 = load %type.TypeNode** %t
	%50 = load %symb.SymbNode** %vb
	%51 = getelementptr %symb.SymbNode* %50, i32 0, i32 8
	%52 = load %ast.AstNode** %51
	%53 = getelementptr %ast.AstNode* %52, i32 0, i32 10
	%54 = load i64* %53
	%55 = call %ast.AstNode* @ast_Const(%type.TypeNode* %49, i64 %54)
	%56 = bitcast %ast.AstNode* %55 to %ast.AstNode*
	%57 = load %symb.SymbNode** %vn
	%58 = getelementptr %symb.SymbNode* %57, i32 0, i32 8
	store %ast.AstNode* %56, %ast.AstNode** %58
	%59 = load %symb.SymbNode** %pvn
	%60 = icmp ne %symb.SymbNode* %59, null
	br i1 %60, label %L.12, label %L.13
L.12:
	%61 = load %symb.SymbNode** %vn
	%62 = bitcast %symb.SymbNode* %61 to %symb.SymbNode*
	%63 = load %symb.SymbNode** %pvn
	%64 = getelementptr %symb.SymbNode* %63, i32 0, i32 0
	store %symb.SymbNode* %62, %symb.SymbNode** %64
	br label %L.11
L.13:
	%65 = load %symb.SymbNode** %vn
	%66 = bitcast %symb.SymbNode* %65 to %symb.SymbNode*
	%67 = load %type.TypeNode** %t
	%68 = getelementptr %type.TypeNode* %67, i32 0, i32 4
	store %symb.SymbNode* %66, %symb.SymbNode** %68
	br label %L.11
L.11:
	%69 = load %symb.SymbNode** %vn
	store %symb.SymbNode* %69, %symb.SymbNode** %pvn
	%70 = load %symb.SymbNode** %vb
	%71 = getelementptr %symb.SymbNode* %70, i32 0, i32 0
	%72 = load %symb.SymbNode** %71
	%73 = bitcast %symb.SymbNode* %72 to %symb.SymbNode*
	store %symb.SymbNode* %73, %symb.SymbNode** %vb
	br label %L.6
L.7:
	br label %return
return:
	ret void
}
define internal %type.TypeNode* @type_Range(%ast.AstNode* %vlo$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%vlo = alloca %ast.AstNode*
	store %ast.AstNode* %vlo$, %ast.AstNode** %vlo
	%t = alloca %type.TypeNode*
	%tok = alloca i8
	%vhi = alloca %ast.AstNode*
	%0 = load %type.TypeNode** @type_unkntype
	store %type.TypeNode* %0, %type.TypeNode** %t
	%1 = load i8* @lex_Token
	%2 = icmp eq i8 %1, 6
	br i1 %2, label %L.2, label %L.3
L.2:
	%3 = call i8 @lex_Next()
	store i8 %3, i8* %tok
	%4 = call %ast.AstNode* @expr_Bool(%type.TypeNode* null)
	store %ast.AstNode* %4, %ast.AstNode** %vhi
	%5 = load %ast.AstNode** %vlo
	%6 = icmp ne %ast.AstNode* %5, null
	br i1 %6, label %L.4, label %L.5
L.4:
	%7 = load %ast.AstNode** %vhi
	%8 = icmp ne %ast.AstNode* %7, null
	br label %L.5
L.5:
	%9 = phi i1 [ false, %L.2 ], [ %8, %L.4 ]
	br i1 %9, label %L.7, label %L.6
L.7:
	%10 = load %ast.AstNode** %vlo
	%11 = getelementptr %ast.AstNode* %10, i32 0, i32 0
	%12 = load i8* %11
	%13 = icmp eq i8 %12, 7
	br i1 %13, label %L.8, label %L.9
L.8:
	%14 = load %ast.AstNode** %vhi
	%15 = getelementptr %ast.AstNode* %14, i32 0, i32 0
	%16 = load i8* %15
	%17 = icmp eq i8 %16, 7
	br label %L.9
L.9:
	%18 = phi i1 [ false, %L.7 ], [ %17, %L.8 ]
	br i1 %18, label %L.11, label %L.12
L.11:
	%19 = load %ast.AstNode** %vlo
	%20 = getelementptr %ast.AstNode* %19, i32 0, i32 8
	%21 = load %type.TypeNode** %20
	%22 = getelementptr %type.TypeNode* %21, i32 0, i32 14
	%23 = load i8* %22
	%24 = zext i8 %23 to i32
	switch i32 %24, label %L.13 [
		i32 1, label %L.15
		i32 2, label %L.15
		i32 3, label %L.15
	]
L.15:
	%25 = load %ast.AstNode** %vlo
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 8
	%27 = load %type.TypeNode** %26
	%28 = getelementptr %type.TypeNode* %27, i32 0, i32 14
	%29 = load i8* %28
	%30 = call %type.TypeNode* @type_New(i8 %29)
	store %type.TypeNode* %30, %type.TypeNode** %t
	%31 = load %ast.AstNode** %vlo
	%32 = getelementptr %ast.AstNode* %31, i32 0, i32 10
	%33 = load i64* %32
	%34 = load %type.TypeNode** %t
	%35 = getelementptr %type.TypeNode* %34, i32 0, i32 7
	store i64 %33, i64* %35
	%36 = load %ast.AstNode** %vhi
	%37 = getelementptr %ast.AstNode* %36, i32 0, i32 10
	%38 = load i64* %37
	%39 = load %type.TypeNode** %t
	%40 = getelementptr %type.TypeNode* %39, i32 0, i32 8
	store i64 %38, i64* %40
	%41 = load %ast.AstNode** %vlo
	%42 = getelementptr %ast.AstNode* %41, i32 0, i32 8
	%43 = load %type.TypeNode** %42
	%44 = getelementptr %type.TypeNode* %43, i32 0, i32 14
	%45 = load i8* %44
	%46 = icmp eq i8 %45, 1
	br i1 %46, label %L.17, label %L.16
L.17:
	%47 = load %type.TypeNode** %t
	%48 = load %ast.AstNode** %vlo
	%49 = getelementptr %ast.AstNode* %48, i32 0, i32 8
	%50 = load %type.TypeNode** %49
	call void @type_RangeEnum(%type.TypeNode* %47, %type.TypeNode* %50)
	br label %L.16
L.16:
	br label %L.14
L.13:
	call void @lex_Error(i8 31)
	br label %L.14
L.14:
	br label %L.10
L.12:
	call void @lex_Error(i8 72)
	br label %L.10
L.10:
	br label %L.6
L.6:
	br label %L.1
L.3:
	call void @lex_ErrorT(i8 17, i8 6)
	br label %L.1
L.1:
	%51 = load %type.TypeNode** %t
	store %type.TypeNode* %51, %type.TypeNode** %rv.0
	br label %return
return:
	%52 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %52
}
@S.538 = internal constant [20 x i8] c"field inital values\00"
define internal %type.TypeNode* @type_Record(%type.TypeNode* %bt$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%bt = alloca %type.TypeNode*
	store %type.TypeNode* %bt$, %type.TypeNode** %bt
	%tok = alloca i8
	%t = alloca %type.TypeNode*
	%ft = alloca %type.TypeNode*
	%s = alloca %symb.SymbNode*
	%ps = alloca %symb.SymbNode*
	%bs = alloca %symb.SymbNode*
	%0 = call i8 @lex_Next()
	store i8 %0, i8* %tok
	%1 = call %type.TypeNode* @type_New(i8 7)
	store %type.TypeNode* %1, %type.TypeNode** %t
	store %symb.SymbNode* null, %symb.SymbNode** %ps
	%2 = load %type.TypeNode** %bt
	%3 = bitcast %type.TypeNode* %2 to %type.TypeNode*
	%4 = load %type.TypeNode** %t
	%5 = getelementptr %type.TypeNode* %4, i32 0, i32 0
	store %type.TypeNode* %3, %type.TypeNode** %5
	%6 = load %type.TypeNode** %bt
	%7 = icmp ne %type.TypeNode* %6, null
	br i1 %7, label %L.2, label %L.1
L.2:
	%8 = load %type.TypeNode** %bt
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 14
	%10 = load i8* %9
	%11 = icmp eq i8 %10, 7
	br i1 %11, label %L.4, label %L.5
L.4:
	%12 = load %type.TypeNode** %bt
	%13 = getelementptr %type.TypeNode* %12, i32 0, i32 4
	%14 = load %symb.SymbNode** %13
	%15 = bitcast %symb.SymbNode* %14 to %symb.SymbNode*
	store %symb.SymbNode* %15, %symb.SymbNode** %bs
	br label %L.6
L.6:
	%16 = load %symb.SymbNode** %bs
	%17 = icmp ne %symb.SymbNode* %16, null
	br i1 %17, label %L.9, label %L.10
L.9:
	%18 = load %symb.SymbNode** %bs
	%19 = getelementptr %symb.SymbNode* %18, i32 0, i32 1
	%20 = load %type.TypeNode** %19
	%21 = getelementptr %type.TypeNode* %20, i32 0, i32 25
	%22 = load i8* %21
	%23 = icmp ne i8 %22, 0
	%24 = xor i1 %23, true
	br label %L.10
L.10:
	%25 = phi i1 [ false, %L.6 ], [ %24, %L.9 ]
	%26 = xor i1 %25, true
	br i1 %26, label %L.7, label %L.8
L.8:
	%27 = load %symb.SymbNode** %bs
	%28 = getelementptr %symb.SymbNode* %27, i32 0, i32 22
	%29 = getelementptr [0 x i8]* %28
	%30 = bitcast [0 x i8]* %29 to [0 x i8]*
	%31 = call %symb.SymbNode* @symb_New(i8 4, [0 x i8]* %30, i8 2)
	store %symb.SymbNode* %31, %symb.SymbNode** %s
	%32 = load %symb.SymbNode** %ps
	%33 = icmp ne %symb.SymbNode* %32, null
	br i1 %33, label %L.12, label %L.13
L.12:
	%34 = load %symb.SymbNode** %s
	%35 = bitcast %symb.SymbNode* %34 to %symb.SymbNode*
	%36 = load %symb.SymbNode** %ps
	%37 = getelementptr %symb.SymbNode* %36, i32 0, i32 0
	store %symb.SymbNode* %35, %symb.SymbNode** %37
	br label %L.11
L.13:
	%38 = load %symb.SymbNode** %s
	%39 = bitcast %symb.SymbNode* %38 to %symb.SymbNode*
	%40 = load %type.TypeNode** %t
	%41 = getelementptr %type.TypeNode* %40, i32 0, i32 4
	store %symb.SymbNode* %39, %symb.SymbNode** %41
	br label %L.11
L.11:
	%42 = load %symb.SymbNode** %s
	store %symb.SymbNode* %42, %symb.SymbNode** %ps
	%43 = load %symb.SymbNode** %bs
	%44 = getelementptr %symb.SymbNode* %43, i32 0, i32 1
	%45 = load %type.TypeNode** %44
	%46 = load %symb.SymbNode** %s
	%47 = getelementptr %symb.SymbNode* %46, i32 0, i32 1
	store %type.TypeNode* %45, %type.TypeNode** %47
	%48 = load %symb.SymbNode** %bs
	%49 = getelementptr %symb.SymbNode* %48, i32 0, i32 0
	%50 = load %symb.SymbNode** %49
	%51 = bitcast %symb.SymbNode* %50 to %symb.SymbNode*
	store %symb.SymbNode* %51, %symb.SymbNode** %bs
	br label %L.6
L.7:
	br label %L.3
L.5:
	store %type.TypeNode* null, %type.TypeNode** %bt
	call void @lex_Error(i8 65)
	br label %L.3
L.3:
	br label %L.1
L.1:
	br label %L.14
L.14:
	%52 = load i8* %tok
	%53 = icmp eq i8 %52, 41
	%54 = xor i1 %53, true
	br i1 %54, label %L.15, label %L.16
L.16:
	%55 = call i8 @lex_Next()
	store i8 %55, i8* %tok
	%56 = load i8* %tok
	%57 = zext i8 %56 to i32
	switch i32 %57, label %L.17 [
		i32 3, label %L.19
	]
L.19:
	%58 = load %type.TypeNode** %t
	%59 = getelementptr %type.TypeNode* %58, i32 0, i32 4
	%60 = load %symb.SymbNode** %59
	%61 = bitcast %symb.SymbNode* %60 to %symb.SymbNode*
	%62 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%63 = call i8 @symb_IsUniqueLocal(%symb.SymbNode* %61, [0 x i8]* %62)
	%64 = icmp ne i8 %63, 0
	%65 = xor i1 %64, true
	br i1 %65, label %L.21, label %L.20
L.21:
	%66 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 20, [0 x i8]* %66)
	br label %L.20
L.20:
	%67 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%68 = call %symb.SymbNode* @symb_New(i8 4, [0 x i8]* %67, i8 2)
	store %symb.SymbNode* %68, %symb.SymbNode** %s
	%69 = load %symb.SymbNode** %ps
	%70 = icmp ne %symb.SymbNode* %69, null
	br i1 %70, label %L.23, label %L.24
L.23:
	%71 = load %symb.SymbNode** %s
	%72 = bitcast %symb.SymbNode* %71 to %symb.SymbNode*
	%73 = load %symb.SymbNode** %ps
	%74 = getelementptr %symb.SymbNode* %73, i32 0, i32 0
	store %symb.SymbNode* %72, %symb.SymbNode** %74
	br label %L.22
L.24:
	%75 = load %symb.SymbNode** %s
	%76 = bitcast %symb.SymbNode* %75 to %symb.SymbNode*
	%77 = load %type.TypeNode** %t
	%78 = getelementptr %type.TypeNode* %77, i32 0, i32 4
	store %symb.SymbNode* %76, %symb.SymbNode** %78
	br label %L.22
L.22:
	%79 = load %symb.SymbNode** %s
	store %symb.SymbNode* %79, %symb.SymbNode** %ps
	%80 = call i8 @lex_Next()
	store i8 %80, i8* %tok
	%81 = load i8* %tok
	%82 = call %type.TypeNode* @type_Def(i8 %81, %type.TypeNode* null)
	store %type.TypeNode* %82, %type.TypeNode** %ft
	%83 = load %type.TypeNode** %ft
	%84 = load %symb.SymbNode** %s
	%85 = getelementptr %symb.SymbNode* %84, i32 0, i32 1
	store %type.TypeNode* %83, %type.TypeNode** %85
	%86 = load i8* @lex_Token
	store i8 %86, i8* %tok
	%87 = load i8* %tok
	%88 = icmp eq i8 %87, 3
	br i1 %88, label %L.26, label %L.25
L.26:
	%89 = load %symb.SymbNode** %s
	%90 = load %type.TypeNode** %ft
	%91 = call %type.TypeNode* @type_FieldAttributes(%symb.SymbNode* %89, %type.TypeNode* %90)
	%92 = load %symb.SymbNode** %s
	%93 = getelementptr %symb.SymbNode* %92, i32 0, i32 1
	store %type.TypeNode* %91, %type.TypeNode** %93
	%94 = load i8* @lex_Token
	store i8 %94, i8* %tok
	br label %L.25
L.25:
	%95 = load i8* %tok
	%96 = icmp eq i8 %95, 9
	br i1 %96, label %L.28, label %L.27
L.28:
	%97 = call i8 @lex_Next()
	store i8 %97, i8* %tok
	%98 = getelementptr [20 x i8]* @S.538
	%99 = bitcast [20 x i8]* %98 to [0 x i8]*
	call void @lex_ErrorS(i8 0, [0 x i8]* %99)
	br label %L.27
L.27:
	br label %L.18
L.17:
	call void @lex_Error(i8 64)
	br label %L.18
L.18:
	%100 = call i8 @lex_Expect(i8 4)
	store i8 %100, i8* %tok
	br label %L.14
L.15:
	%101 = call i8 @lex_Expect(i8 37)
	store i8 %101, i8* %tok
	%102 = load %type.TypeNode** %t
	store %type.TypeNode* %102, %type.TypeNode** %rv.0
	br label %return
return:
	%103 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %103
}
define internal %type.TypeNode* @type_Array() nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%tok = alloca i8
	%t = alloca %type.TypeNode*
	%bt = alloca %type.TypeNode*
	%tree = alloca %ast.AstNode*
	%0 = call i8 @lex_Next()
	store i8 %0, i8* %tok
	%1 = call %type.TypeNode* @type_New(i8 6)
	store %type.TypeNode* %1, %type.TypeNode** %t
	%2 = load i8* %tok
	%3 = icmp ne i8 %2, 35
	br i1 %3, label %L.2, label %L.3
L.2:
	%4 = call %ast.AstNode* @expr_Bool(%type.TypeNode* null)
	store %ast.AstNode* %4, %ast.AstNode** %tree
	%5 = load %ast.AstNode** %tree
	%6 = icmp ne %ast.AstNode* %5, null
	br i1 %6, label %L.5, label %L.4
L.5:
	%7 = load %ast.AstNode** %tree
	%8 = getelementptr %ast.AstNode* %7, i32 0, i32 0
	%9 = load i8* %8
	%10 = zext i8 %9 to i32
	switch i32 %10, label %L.6 [
		i32 7, label %L.8
		i32 2, label %L.9
	]
L.8:
	%11 = load i8* @lex_Token
	%12 = icmp eq i8 %11, 6
	br i1 %12, label %L.11, label %L.12
L.11:
	%13 = load %ast.AstNode** %tree
	%14 = call %type.TypeNode* @type_Range(%ast.AstNode* %13)
	%15 = bitcast %type.TypeNode* %14 to %type.TypeNode*
	%16 = load %type.TypeNode** %t
	%17 = getelementptr %type.TypeNode* %16, i32 0, i32 2
	store %type.TypeNode* %15, %type.TypeNode** %17
	%18 = load %type.TypeNode** %t
	%19 = getelementptr %type.TypeNode* %18, i32 0, i32 2
	%20 = load %type.TypeNode** %19
	%21 = getelementptr %type.TypeNode* %20, i32 0, i32 7
	%22 = load i64* %21
	%23 = load %type.TypeNode** %t
	%24 = getelementptr %type.TypeNode* %23, i32 0, i32 7
	store i64 %22, i64* %24
	%25 = load %type.TypeNode** %t
	%26 = getelementptr %type.TypeNode* %25, i32 0, i32 2
	%27 = load %type.TypeNode** %26
	%28 = getelementptr %type.TypeNode* %27, i32 0, i32 8
	%29 = load i64* %28
	%30 = load %type.TypeNode** %t
	%31 = getelementptr %type.TypeNode* %30, i32 0, i32 8
	store i64 %29, i64* %31
	br label %L.10
L.12:
	%32 = load %type.TypeNode** %t
	%33 = getelementptr %type.TypeNode* %32, i32 0, i32 7
	store i64 0, i64* %33
	%34 = load %ast.AstNode** %tree
	%35 = getelementptr %ast.AstNode* %34, i32 0, i32 10
	%36 = load i64* %35
	%37 = sub i64 %36, 1
	%38 = load %type.TypeNode** %t
	%39 = getelementptr %type.TypeNode* %38, i32 0, i32 8
	store i64 %37, i64* %39
	%40 = load %type.TypeNode** @type_wordtype
	%41 = bitcast %type.TypeNode* %40 to %type.TypeNode*
	%42 = load %type.TypeNode** %t
	%43 = getelementptr %type.TypeNode* %42, i32 0, i32 2
	store %type.TypeNode* %41, %type.TypeNode** %43
	br label %L.10
L.10:
	br label %L.7
L.9:
	%44 = load %ast.AstNode** %tree
	%45 = getelementptr %ast.AstNode* %44, i32 0, i32 8
	%46 = load %type.TypeNode** %45
	%47 = getelementptr %type.TypeNode* %46, i32 0, i32 14
	%48 = load i8* %47
	%49 = zext i8 %48 to i32
	switch i32 %49, label %L.13 [
		i32 1, label %L.15
		i32 2, label %L.15
	]
L.15:
	%50 = load %ast.AstNode** %tree
	%51 = getelementptr %ast.AstNode* %50, i32 0, i32 8
	%52 = load %type.TypeNode** %51
	%53 = getelementptr %type.TypeNode* %52, i32 0, i32 7
	%54 = load i64* %53
	%55 = load %type.TypeNode** %t
	%56 = getelementptr %type.TypeNode* %55, i32 0, i32 7
	store i64 %54, i64* %56
	%57 = load %ast.AstNode** %tree
	%58 = getelementptr %ast.AstNode* %57, i32 0, i32 8
	%59 = load %type.TypeNode** %58
	%60 = getelementptr %type.TypeNode* %59, i32 0, i32 8
	%61 = load i64* %60
	%62 = load %type.TypeNode** %t
	%63 = getelementptr %type.TypeNode* %62, i32 0, i32 8
	store i64 %61, i64* %63
	%64 = load %ast.AstNode** %tree
	%65 = getelementptr %ast.AstNode* %64, i32 0, i32 8
	%66 = load %type.TypeNode** %65
	%67 = bitcast %type.TypeNode* %66 to %type.TypeNode*
	%68 = load %type.TypeNode** %t
	%69 = getelementptr %type.TypeNode* %68, i32 0, i32 2
	store %type.TypeNode* %67, %type.TypeNode** %69
	br label %L.14
L.13:
	call void @lex_Error(i8 24)
	br label %L.14
L.14:
	br label %L.7
L.6:
	call void @lex_Error(i8 24)
	br label %L.7
L.7:
	br label %L.4
L.4:
	br label %L.1
L.3:
	%70 = load %type.TypeNode** %t
	%71 = getelementptr %type.TypeNode* %70, i32 0, i32 25
	store i8 1, i8* %71
	br label %L.1
L.1:
	%72 = call i8 @lex_Expect(i8 35)
	store i8 %72, i8* %tok
	%73 = load i8* %tok
	%74 = call %type.TypeNode* @type_Def(i8 %73, %type.TypeNode* null)
	store %type.TypeNode* %74, %type.TypeNode** %bt
	%75 = load %type.TypeNode** %bt
	%76 = bitcast %type.TypeNode* %75 to %type.TypeNode*
	%77 = load %type.TypeNode** %t
	%78 = getelementptr %type.TypeNode* %77, i32 0, i32 0
	store %type.TypeNode* %76, %type.TypeNode** %78
	%79 = load %type.TypeNode** %t
	store %type.TypeNode* %79, %type.TypeNode** %rv.0
	br label %return
return:
	%80 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %80
}
@S.539 = internal constant [41 x i8] c"Aggregate parameter by value not allowed\00"
define internal void @type_DefProc(%symb.SymbNode* %procs$, %symb.SymbNode* %meths$) nounwind {
L.0:
	%procs = alloca %symb.SymbNode*
	%meths = alloca %symb.SymbNode*
	store %symb.SymbNode* %procs$, %symb.SymbNode** %procs
	store %symb.SymbNode* %meths$, %symb.SymbNode** %meths
	%s = alloca %symb.SymbNode*
	%prevs = alloca %symb.SymbNode*
	%t = alloca %type.TypeNode*
	%tl = alloca %type.TypeListEntry*
	%tlprev = alloca %type.TypeListEntry*
	%tok = alloca i8
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 32
	br i1 %2, label %L.2, label %L.3
L.2:
	%3 = call i8 @lex_Next()
	store i8 %3, i8* %tok
	%4 = load %symb.SymbNode** %meths
	%5 = icmp ne %symb.SymbNode* %4, null
	br i1 %5, label %L.5, label %L.4
L.5:
	%6 = load %symb.SymbNode** %meths
	%7 = bitcast %symb.SymbNode* %6 to %symb.SymbNode*
	%8 = load %symb.SymbNode** %procs
	%9 = getelementptr %symb.SymbNode* %8, i32 0, i32 3
	store %symb.SymbNode* %7, %symb.SymbNode** %9
	br label %L.4
L.4:
	%10 = load i8* %tok
	%11 = icmp ne i8 %10, 33
	br i1 %11, label %L.7, label %L.6
L.7:
	%12 = load %symb.SymbNode** %meths
	store %symb.SymbNode* %12, %symb.SymbNode** %prevs
	br label %L.8
L.8:
	%13 = load i8* %tok
	%14 = icmp eq i8 %13, 41
	br i1 %14, label %L.11, label %L.12
L.11:
	%15 = load %symb.SymbNode** %procs
	%16 = getelementptr %symb.SymbNode* %15, i32 0, i32 3
	%17 = load %symb.SymbNode** %16
	%18 = bitcast %symb.SymbNode* %17 to %symb.SymbNode*
	%19 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%20 = call i8 @symb_IsUniqueLocal(%symb.SymbNode* %18, [0 x i8]* %19)
	%21 = icmp ne i8 %20, 0
	%22 = xor i1 %21, true
	br i1 %22, label %L.14, label %L.13
L.14:
	%23 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 20, [0 x i8]* %23)
	br label %L.13
L.13:
	%24 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%25 = call %symb.SymbNode* @symb_New(i8 3, [0 x i8]* %24, i8 2)
	store %symb.SymbNode* %25, %symb.SymbNode** %s
	%26 = call i8 @lex_Next()
	store i8 %26, i8* %tok
	%27 = load %symb.SymbNode** %s
	%28 = getelementptr %symb.SymbNode* %27, i32 0, i32 14
	store i8 0, i8* %28
	%29 = load %type.TypeNode** @type_unkntype
	store %type.TypeNode* %29, %type.TypeNode** %t
	%30 = load i8* %tok
	%31 = icmp eq i8 %30, 3
	br i1 %31, label %L.16, label %L.17
L.16:
	%32 = call i8 @lex_Next()
	store i8 %32, i8* %tok
	%33 = load i8* %tok
	%34 = call %type.TypeNode* @type_Def(i8 %33, %type.TypeNode* null)
	store %type.TypeNode* %34, %type.TypeNode** %t
	%35 = load %type.TypeNode** %t
	call void @type_Final(%type.TypeNode* %35)
	%36 = load i8* @lex_Token
	store i8 %36, i8* %tok
	br label %L.15
L.17:
	call void @lex_ErrorT(i8 17, i8 3)
	br label %L.15
L.15:
	%37 = getelementptr %A.2* @debug, i32 0, i32 3
	%38 = getelementptr [10 x i8]* %37, i32 0, i32 2
	%39 = load i8* %38
	%40 = icmp ne i8 %39, 0
	br i1 %40, label %L.19, label %L.18
L.19:
	%41 = load %type.TypeNode** %t
	%42 = getelementptr %type.TypeNode* %41, i32 0, i32 14
	%43 = load i8* %42
	%44 = zext i8 %43 to i32
	switch i32 %44, label %L.20 [
		i32 6, label %L.22
		i32 7, label %L.22
	]
L.22:
	%45 = load %type.TypeNode** %t
	%46 = getelementptr %type.TypeNode* %45, i32 0, i32 21
	%47 = load i8* %46
	%48 = icmp ne i8 %47, 0
	%49 = xor i1 %48, true
	br i1 %49, label %L.24, label %L.23
L.24:
	%50 = getelementptr [41 x i8]* @S.539
	%51 = bitcast [41 x i8]* %50 to [0 x i8]*
	call void @lex_ErrorS(i8 0, [0 x i8]* %51)
	br label %L.23
L.23:
	br label %L.21
L.20:
	br label %L.21
L.21:
	br label %L.18
L.18:
	%52 = load %type.TypeNode** %t
	%53 = load %symb.SymbNode** %s
	%54 = getelementptr %symb.SymbNode* %53, i32 0, i32 1
	store %type.TypeNode* %52, %type.TypeNode** %54
	%55 = load %symb.SymbNode** %procs
	%56 = getelementptr %symb.SymbNode* %55, i32 0, i32 3
	%57 = load %symb.SymbNode** %56
	%58 = icmp eq %symb.SymbNode* %57, null
	br i1 %58, label %L.26, label %L.25
L.26:
	%59 = load %symb.SymbNode** %s
	%60 = bitcast %symb.SymbNode* %59 to %symb.SymbNode*
	%61 = load %symb.SymbNode** %procs
	%62 = getelementptr %symb.SymbNode* %61, i32 0, i32 3
	store %symb.SymbNode* %60, %symb.SymbNode** %62
	br label %L.25
L.25:
	%63 = load %symb.SymbNode** %prevs
	%64 = icmp ne %symb.SymbNode* %63, null
	br i1 %64, label %L.28, label %L.27
L.28:
	%65 = load %symb.SymbNode** %s
	%66 = bitcast %symb.SymbNode* %65 to %symb.SymbNode*
	%67 = load %symb.SymbNode** %prevs
	%68 = getelementptr %symb.SymbNode* %67, i32 0, i32 0
	store %symb.SymbNode* %66, %symb.SymbNode** %68
	br label %L.27
L.27:
	%69 = load %symb.SymbNode** %s
	store %symb.SymbNode* %69, %symb.SymbNode** %prevs
	br label %L.10
L.12:
	call void @lex_Error(i8 18)
	br label %L.10
L.10:
	%70 = load i8* %tok
	%71 = icmp ne i8 %70, 5
	br i1 %71, label %L.9, label %L.29
L.29:
	%72 = call i8 @lex_Next()
	store i8 %72, i8* %tok
	br label %L.8
L.9:
	br label %L.6
L.6:
	%73 = call i8 @lex_Expect(i8 33)
	store i8 %73, i8* %tok
	br label %L.1
L.3:
	call void @lex_ErrorT(i8 17, i8 32)
	br label %L.1
L.1:
	%74 = load i8* %tok
	%75 = icmp eq i8 %74, 3
	br i1 %75, label %L.31, label %L.30
L.31:
	%76 = call i8 @lex_Next()
	store i8 %76, i8* %tok
	%77 = load i8* %tok
	%78 = icmp ne i8 %77, 3
	br i1 %78, label %L.33, label %L.32
L.33:
	store %type.TypeListEntry* null, %type.TypeListEntry** %tlprev
	br label %L.34
L.34:
	%79 = load i8* %tok
	%80 = call %type.TypeNode* @type_Def(i8 %79, %type.TypeNode* null)
	store %type.TypeNode* %80, %type.TypeNode** %t
	%81 = load %type.TypeNode** %t
	call void @type_Final(%type.TypeNode* %81)
	%82 = call [0 x i8]* @sys_zalloc(i32 8)
	%83 = bitcast [0 x i8]* %82 to %type.TypeListEntry*
	store %type.TypeListEntry* %83, %type.TypeListEntry** %tl
	%84 = load %type.TypeNode** %t
	%85 = bitcast %type.TypeNode* %84 to %type.TypeNode*
	%86 = load %type.TypeListEntry** %tl
	%87 = getelementptr %type.TypeListEntry* %86, i32 0, i32 1
	store %type.TypeNode* %85, %type.TypeNode** %87
	%88 = load %type.TypeListEntry** %tlprev
	%89 = icmp eq %type.TypeListEntry* %88, null
	br i1 %89, label %L.37, label %L.38
L.37:
	%90 = load %type.TypeListEntry** %tl
	%91 = load %symb.SymbNode** %procs
	%92 = getelementptr %symb.SymbNode* %91, i32 0, i32 4
	store %type.TypeListEntry* %90, %type.TypeListEntry** %92
	br label %L.36
L.38:
	%93 = load %type.TypeListEntry** %tl
	%94 = bitcast %type.TypeListEntry* %93 to %type.TypeListEntry*
	%95 = load %type.TypeListEntry** %tlprev
	%96 = getelementptr %type.TypeListEntry* %95, i32 0, i32 0
	store %type.TypeListEntry* %94, %type.TypeListEntry** %96
	br label %L.36
L.36:
	%97 = load %type.TypeListEntry** %tl
	store %type.TypeListEntry* %97, %type.TypeListEntry** %tlprev
	%98 = load i8* @lex_Token
	store i8 %98, i8* %tok
	%99 = load i8* %tok
	%100 = icmp ne i8 %99, 5
	br i1 %100, label %L.35, label %L.39
L.39:
	%101 = call i8 @lex_Next()
	store i8 %101, i8* %tok
	br label %L.34
L.35:
	%102 = load %symb.SymbNode** %procs
	%103 = getelementptr %symb.SymbNode* %102, i32 0, i32 4
	%104 = load %type.TypeListEntry** %103
	%105 = getelementptr %type.TypeListEntry* %104, i32 0, i32 1
	%106 = load %type.TypeNode** %105
	%107 = bitcast %type.TypeNode* %106 to %type.TypeNode*
	%108 = load %symb.SymbNode** %procs
	%109 = getelementptr %symb.SymbNode* %108, i32 0, i32 1
	store %type.TypeNode* %107, %type.TypeNode** %109
	br label %L.32
L.32:
	br label %L.30
L.30:
	br label %return
return:
	ret void
}
define internal %symb.SymbNode* @type_Name() nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%s = alloca %symb.SymbNode*
	%0 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%1 = call %symb.SymbNode* @symb_Find([0 x i8]* %0)
	store %symb.SymbNode* %1, %symb.SymbNode** %s
	%2 = load %symb.SymbNode** %s
	%3 = icmp ne %symb.SymbNode* %2, null
	br i1 %3, label %L.1, label %L.2
L.1:
	%4 = load %symb.SymbNode** %s
	%5 = getelementptr %symb.SymbNode* %4, i32 0, i32 13
	%6 = load i8* %5
	%7 = icmp ne i8 %6, 2
	br label %L.2
L.2:
	%8 = phi i1 [ false, %L.0 ], [ %7, %L.1 ]
	br i1 %8, label %L.4, label %L.3
L.4:
	call void @lex_Error(i8 26)
	br label %L.3
L.3:
	%9 = load %symb.SymbNode** %s
	store %symb.SymbNode* %9, %symb.SymbNode** %rv.0
	br label %return
return:
	%10 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %10
}
define internal %type.TypeNode* @type_Ref() nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%tok = alloca i8
	%t = alloca %type.TypeNode*
	%bs = alloca %symb.SymbNode*
	%0 = load %type.TypeNode** @type_unkntype
	store %type.TypeNode* %0, %type.TypeNode** %t
	%1 = call i8 @lex_Next()
	store i8 %1, i8* %tok
	%2 = load i8* %tok
	%3 = icmp eq i8 %2, 41
	br i1 %3, label %L.2, label %L.3
L.2:
	%4 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%5 = call i8 @symb_IsAnon([0 x i8]* %4)
	%6 = icmp ne i8 %5, 0
	br i1 %6, label %L.5, label %L.6
L.5:
	%7 = call %type.TypeNode* @type_New(i8 8)
	store %type.TypeNode* %7, %type.TypeNode** %t
	%8 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%9 = call %symb.SymbNode* @symb_New(i8 5, [0 x i8]* %8, i8 2)
	store %symb.SymbNode* %9, %symb.SymbNode** %bs
	%10 = call i8 @lex_Next()
	store i8 %10, i8* %tok
	%11 = load %symb.SymbNode** %bs
	call void @type_DefProc(%symb.SymbNode* %11, %symb.SymbNode* null)
	%12 = load %symb.SymbNode** %bs
	%13 = bitcast %symb.SymbNode* %12 to %symb.SymbNode*
	%14 = load %type.TypeNode** %t
	%15 = getelementptr %type.TypeNode* %14, i32 0, i32 4
	store %symb.SymbNode* %13, %symb.SymbNode** %15
	br label %L.4
L.6:
	%16 = call %type.TypeNode* @type_New(i8 5)
	store %type.TypeNode* %16, %type.TypeNode** %t
	%17 = call %symb.SymbNode* @type_Name()
	store %symb.SymbNode* %17, %symb.SymbNode** %bs
	%18 = load %symb.SymbNode** %bs
	%19 = icmp ne %symb.SymbNode* %18, null
	br i1 %19, label %L.8, label %L.9
L.8:
	%20 = load %symb.SymbNode** %bs
	%21 = getelementptr %symb.SymbNode* %20, i32 0, i32 1
	%22 = load %type.TypeNode** %21
	%23 = icmp ne %type.TypeNode* %22, null
	br i1 %23, label %L.11, label %L.12
L.11:
	%24 = load %symb.SymbNode** %bs
	%25 = getelementptr %symb.SymbNode* %24, i32 0, i32 1
	%26 = load %type.TypeNode** %25
	%27 = bitcast %type.TypeNode* %26 to %type.TypeNode*
	%28 = load %type.TypeNode** %t
	%29 = getelementptr %type.TypeNode* %28, i32 0, i32 0
	store %type.TypeNode* %27, %type.TypeNode** %29
	br label %L.10
L.12:
	%30 = load %symb.SymbNode** %bs
	%31 = load %type.TypeNode** %t
	call void @type_FwdAdd(%symb.SymbNode* %30, %type.TypeNode* %31)
	br label %L.10
L.10:
	br label %L.7
L.9:
	%32 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%33 = call %symb.SymbNode* @symb_New(i8 2, [0 x i8]* %32, i8 0)
	store %symb.SymbNode* %33, %symb.SymbNode** %bs
	%34 = load %symb.SymbNode** %bs
	%35 = load %type.TypeNode** %t
	call void @type_FwdAdd(%symb.SymbNode* %34, %type.TypeNode* %35)
	br label %L.7
L.7:
	%36 = call i8 @lex_Next()
	store i8 %36, i8* %tok
	br label %L.4
L.4:
	br label %L.1
L.3:
	%37 = call %type.TypeNode* @type_New(i8 5)
	store %type.TypeNode* %37, %type.TypeNode** %t
	%38 = load i8* %tok
	%39 = call %type.TypeNode* @type_Def(i8 %38, %type.TypeNode* null)
	%40 = bitcast %type.TypeNode* %39 to %type.TypeNode*
	%41 = load %type.TypeNode** %t
	%42 = getelementptr %type.TypeNode* %41, i32 0, i32 0
	store %type.TypeNode* %40, %type.TypeNode** %42
	br label %L.1
L.1:
	%43 = load %type.TypeNode** %t
	store %type.TypeNode* %43, %type.TypeNode** %rv.0
	br label %return
return:
	%44 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %44
}
define internal %type.TypeNode* @type_Def(i8 zeroext %tok$, %type.TypeNode* %bt$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%tok = alloca i8
	%bt = alloca %type.TypeNode*
	store i8 %tok$, i8* %tok
	store %type.TypeNode* %bt$, %type.TypeNode** %bt
	%t = alloca %type.TypeNode*
	%s = alloca %symb.SymbNode*
	%vlo = alloca %ast.AstNode*
	%0 = load %type.TypeNode** @type_unkntype
	store %type.TypeNode* %0, %type.TypeNode** %t
	%1 = load i8* %tok
	%2 = zext i8 %1 to i32
	switch i32 %2, label %L.1 [
		i32 38, label %L.3
		i32 14, label %L.3
		i32 15, label %L.3
		i32 41, label %L.4
		i32 7, label %L.5
		i32 32, label %L.6
		i32 36, label %L.7
		i32 34, label %L.8
		i32 8, label %L.9
	]
L.3:
	%3 = call %ast.AstNode* @expr_Bool(%type.TypeNode* null)
	store %ast.AstNode* %3, %ast.AstNode** %vlo
	%4 = load %ast.AstNode** %vlo
	%5 = call %type.TypeNode* @type_Range(%ast.AstNode* %4)
	store %type.TypeNode* %5, %type.TypeNode** %t
	br label %L.2
L.4:
	%6 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%7 = call %symb.SymbNode* @symb_Find([0 x i8]* %6)
	store %symb.SymbNode* %7, %symb.SymbNode** %s
	%8 = load %symb.SymbNode** %s
	%9 = icmp ne %symb.SymbNode* %8, null
	br i1 %9, label %L.11, label %L.12
L.11:
	%10 = load %symb.SymbNode** %s
	%11 = getelementptr %symb.SymbNode* %10, i32 0, i32 13
	%12 = load i8* %11
	%13 = zext i8 %12 to i32
	switch i32 %13, label %L.13 [
		i32 2, label %L.15
		i32 1, label %L.16
	]
L.15:
	%14 = call i8 @lex_Next()
	store i8 %14, i8* %tok
	%15 = load i8* %tok
	%16 = icmp eq i8 %15, 2
	br i1 %16, label %L.18, label %L.19
L.18:
	%17 = call i8 @lex_Next()
	store i8 %17, i8* %tok
	%18 = load %symb.SymbNode** %s
	%19 = getelementptr %symb.SymbNode* %18, i32 0, i32 1
	%20 = load %type.TypeNode** %19
	%21 = call %ast.AstNode* @expr_EnumConst(%type.TypeNode* %20)
	store %ast.AstNode* %21, %ast.AstNode** %vlo
	%22 = call i8 @lex_Next()
	store i8 %22, i8* %tok
	%23 = load %symb.SymbNode** %s
	%24 = getelementptr %symb.SymbNode* %23, i32 0, i32 1
	%25 = load %type.TypeNode** %24
	%26 = call %ast.AstNode* @expr_EnumConst(%type.TypeNode* %25)
	%27 = call %type.TypeNode* @type_Range(%ast.AstNode* %26)
	store %type.TypeNode* %27, %type.TypeNode** %t
	br label %L.17
L.19:
	%28 = load %symb.SymbNode** %s
	%29 = getelementptr %symb.SymbNode* %28, i32 0, i32 1
	%30 = load %type.TypeNode** %29
	store %type.TypeNode* %30, %type.TypeNode** %t
	%31 = load %type.TypeNode** %t
	%32 = icmp eq %type.TypeNode* %31, null
	br i1 %32, label %L.21, label %L.20
L.21:
	call void @lex_Error(i8 25)
	%33 = load %type.TypeNode** @type_unkntype
	store %type.TypeNode* %33, %type.TypeNode** %t
	br label %L.20
L.20:
	br label %L.17
L.17:
	br label %L.14
L.16:
	%34 = call %ast.AstNode* @expr_Bool(%type.TypeNode* null)
	store %ast.AstNode* %34, %ast.AstNode** %vlo
	%35 = load %ast.AstNode** %vlo
	%36 = call %type.TypeNode* @type_Range(%ast.AstNode* %35)
	store %type.TypeNode* %36, %type.TypeNode** %t
	br label %L.14
L.13:
	%37 = call i8 @lex_Next()
	store i8 %37, i8* %tok
	call void @lex_Error(i8 26)
	br label %L.14
L.14:
	br label %L.10
L.12:
	%38 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 19, [0 x i8]* %38)
	br label %L.10
L.10:
	br label %L.2
L.5:
	%39 = call %type.TypeNode* @type_Ref()
	store %type.TypeNode* %39, %type.TypeNode** %t
	br label %L.2
L.6:
	%40 = load %type.TypeNode** %bt
	%41 = call %type.TypeNode* @type_Enum(%type.TypeNode* %40)
	store %type.TypeNode* %41, %type.TypeNode** %t
	br label %L.2
L.7:
	%42 = load %type.TypeNode** %bt
	%43 = call %type.TypeNode* @type_Record(%type.TypeNode* %42)
	store %type.TypeNode* %43, %type.TypeNode** %t
	br label %L.2
L.8:
	%44 = call %type.TypeNode* @type_Array()
	store %type.TypeNode* %44, %type.TypeNode** %t
	br label %L.2
L.9:
	%tree = alloca %ast.AstNode*
	%45 = call i8 @lex_Next()
	store i8 %45, i8* %tok
	%46 = call %ast.AstNode* @expr_GetLHS()
	store %ast.AstNode* %46, %ast.AstNode** %tree
	%47 = load %ast.AstNode** %tree
	%48 = icmp ne %ast.AstNode* %47, null
	br i1 %48, label %L.23, label %L.22
L.23:
	%49 = load %ast.AstNode** %tree
	%50 = getelementptr %ast.AstNode* %49, i32 0, i32 8
	%51 = load %type.TypeNode** %50
	%52 = getelementptr %type.TypeNode* %51, i32 0, i32 0
	%53 = load %type.TypeNode** %52
	%54 = bitcast %type.TypeNode* %53 to %type.TypeNode*
	store %type.TypeNode* %54, %type.TypeNode** %t
	br label %L.22
L.22:
	br label %L.2
L.1:
	call void @lex_Error(i8 27)
	br label %L.2
L.2:
	%55 = load %type.TypeNode** %t
	store %type.TypeNode* %55, %type.TypeNode** %rv.0
	br label %return
return:
	%56 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %56
}
define internal %type.TypeNode* @type_NewBuiltin(i8 zeroext %kind$, [0 x i8]* %name$, i32 %size$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%kind = alloca i8
	%name = alloca [0 x i8]*
	%size = alloca i32
	store i8 %kind$, i8* %kind
	store [0 x i8]* %name$, [0 x i8]** %name
	store i32 %size$, i32* %size
	%t = alloca %type.TypeNode*
	%s = alloca %symb.SymbNode*
	%levelsave = alloca i8
	%0 = load i8* %kind
	%1 = call %type.TypeNode* @type_New(i8 %0)
	store %type.TypeNode* %1, %type.TypeNode** %t
	%2 = load i32* %size
	%3 = load %type.TypeNode** %t
	%4 = getelementptr %type.TypeNode* %3, i32 0, i32 9
	store i32 %2, i32* %4
	%5 = load i8* %kind
	%6 = zext i8 %5 to i32
	switch i32 %6, label %L.1 [
		i32 1, label %L.3
		i32 2, label %L.3
		i32 3, label %L.4
	]
L.3:
	%7 = load %type.TypeNode** %t
	%8 = getelementptr %type.TypeNode* %7, i32 0, i32 7
	store i64 0, i64* %8
	%9 = load i32* %size
	%10 = zext i32 %9 to i64
	%11 = sub i64 %10, 1
	%12 = shl i64 1, %11
	%13 = sub i64 %12, 1
	%14 = shl i64 %13, 1
	%15 = or i64 %14, 1
	%16 = load %type.TypeNode** %t
	%17 = getelementptr %type.TypeNode* %16, i32 0, i32 8
	store i64 %15, i64* %17
	br label %L.2
L.4:
	%18 = load i32* %size
	%19 = zext i32 %18 to i64
	%20 = sub i64 %19, 1
	%21 = shl i64 1, %20
	%22 = sub i64 %21, 1
	%23 = load %type.TypeNode** %t
	%24 = getelementptr %type.TypeNode* %23, i32 0, i32 8
	store i64 %22, i64* %24
	%25 = load %type.TypeNode** %t
	%26 = getelementptr %type.TypeNode* %25, i32 0, i32 8
	%27 = load i64* %26
	%28 = xor i64 %27, -1
	%29 = load %type.TypeNode** %t
	%30 = getelementptr %type.TypeNode* %29, i32 0, i32 7
	store i64 %28, i64* %30
	br label %L.2
L.1:
	br label %L.2
L.2:
	%31 = load %type.TypeNode** %t
	call void @type_Final(%type.TypeNode* %31)
	%32 = load i8* @symb_level
	store i8 %32, i8* %levelsave
	store i8 0, i8* @symb_level
	%33 = load [0 x i8]** %name
	%34 = bitcast [0 x i8]* %33 to [0 x i8]*
	%35 = call %symb.SymbNode* @symb_New(i8 2, [0 x i8]* %34, i8 0)
	store %symb.SymbNode* %35, %symb.SymbNode** %s
	%36 = load i8* %levelsave
	store i8 %36, i8* @symb_level
	%37 = load %type.TypeNode** %t
	%38 = load %symb.SymbNode** %s
	%39 = getelementptr %symb.SymbNode* %38, i32 0, i32 1
	store %type.TypeNode* %37, %type.TypeNode** %39
	%40 = load %symb.SymbNode** %s
	%41 = bitcast %symb.SymbNode* %40 to %symb.SymbNode*
	%42 = load %type.TypeNode** %t
	%43 = getelementptr %type.TypeNode* %42, i32 0, i32 3
	store %symb.SymbNode* %41, %symb.SymbNode** %43
	%44 = load %type.TypeNode** %t
	store %type.TypeNode* %44, %type.TypeNode** %rv.0
	br label %return
return:
	%45 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %45
}
@S.541 = internal constant [1 x i8] c"\00"
@S.542 = internal constant [4 x i8] c"msb\00"
@S.543 = internal constant [4 x i8] c"lsb\00"
@type_bitorderstr = internal constant [3 x [0 x i8]*] [ [0 x i8]* bitcast( [1 x i8]* getelementptr( [1 x i8]* @S.541 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.542 )  to [0 x i8]* ), [0 x i8]* bitcast( [4 x i8]* getelementptr( [4 x i8]* @S.543 )  to [0 x i8]* ) ], align 4
@S.545 = internal constant [1 x i8] c"\00"
@S.546 = internal constant [3 x i8] c"be\00"
@S.547 = internal constant [3 x i8] c"le\00"
@type_memorderstr = internal constant [3 x [0 x i8]*] [ [0 x i8]* bitcast( [1 x i8]* getelementptr( [1 x i8]* @S.545 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.546 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.547 )  to [0 x i8]* ) ], align 4
@S.549 = internal constant [3 x i8] c"RW\00"
@S.550 = internal constant [3 x i8] c"RO\00"
@S.551 = internal constant [3 x i8] c"WO\00"
@type_accessstr = internal constant [3 x [0 x i8]*] [ [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.549 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.550 )  to [0 x i8]* ), [0 x i8]* bitcast( [3 x i8]* getelementptr( [3 x i8]* @S.551 )  to [0 x i8]* ) ], align 4
@type_blanks = internal constant [65 x i8] c"                                                                \00", align 1
@S.553 = internal constant [3 x i8] c"..\00"
@S.554 = internal constant [3 x i8] c"..\00"
@S.555 = internal constant [3 x i8] c", \00"
@S.556 = internal constant [8 x i8] c"<float>\00"
@S.557 = internal constant [3 x i8] c"{\0A\00"
@S.558 = internal constant [3 x i8] c" (\00"
@S.559 = internal constant [3 x i8] c"0x\00"
@S.560 = internal constant [4 x i8] c"): \00"
@S.561 = internal constant [3 x i8] c"..\00"
@S.562 = internal constant [3 x i8] c"@_\00"
@S.563 = internal constant [10 x i8] c"*UNKNOWN*\00"
@S.564 = internal constant [7 x i8] c" size=\00"
@S.565 = internal constant [7 x i8] c" attr=\00"
@S.566 = internal constant [8 x i8] c"unalgn \00"
@S.567 = internal constant [8 x i8] c"packed \00"
@S.568 = internal constant [8 x i8] c"noepad \00"
@S.569 = internal constant [8 x i8] c"nofpad \00"
@S.570 = internal constant [13 x i8] c"\0A\09methods:\0A\09\00"
@S.571 = internal constant [4 x i8] c"???\00"
define internal void @type_Dump2(%type.TypeNode* %t$, i32 %indent$, i8 zeroext %full$) nounwind {
L.0:
	%t = alloca %type.TypeNode*
	%indent = alloca i32
	%full = alloca i8
	store %type.TypeNode* %t$, %type.TypeNode** %t
	store i32 %indent$, i32* %indent
	store i8 %full$, i8* %full
	%s = alloca %symb.SymbNode*
	%offs = alloca i16
	%0 = load %type.TypeNode** %t
	%1 = icmp ne %type.TypeNode* %0, null
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load %type.TypeNode** %t
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 3
	%4 = load %symb.SymbNode** %3
	%5 = icmp ne %symb.SymbNode* %4, null
	br i1 %5, label %L.4, label %L.5
L.4:
	%6 = load i8* %full
	%7 = icmp ne i8 %6, 0
	%8 = xor i1 %7, true
	br label %L.5
L.5:
	%9 = phi i1 [ false, %L.2 ], [ %8, %L.4 ]
	br i1 %9, label %L.7, label %L.8
L.7:
	%10 = load %type.TypeNode** %t
	%11 = getelementptr %type.TypeNode* %10, i32 0, i32 3
	%12 = load %symb.SymbNode** %11
	%13 = getelementptr %symb.SymbNode* %12, i32 0, i32 22
	%14 = getelementptr [0 x i8]* %13
	%15 = bitcast [0 x i8]* %14 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %15)
	br label %L.6
L.8:
	%16 = load %type.TypeNode** %t
	%17 = getelementptr %type.TypeNode* %16, i32 0, i32 14
	%18 = load i8* %17
	%19 = zext i8 %18 to i32
	switch i32 %19, label %L.9 [
		i32 2, label %L.11
		i32 3, label %L.12
		i32 1, label %L.13
		i32 4, label %L.14
		i32 7, label %L.15
		i32 6, label %L.16
		i32 5, label %L.17
		i32 8, label %L.18
	]
L.11:
	%20 = load %type.TypeNode** %t
	%21 = getelementptr %type.TypeNode* %20, i32 0, i32 7
	%22 = load i64* %21
	call void @sys_fildes_uint64(i32 2, i64 %22)
	%23 = getelementptr [3 x i8]* @S.553
	%24 = bitcast [3 x i8]* %23 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %24)
	%25 = load %type.TypeNode** %t
	%26 = getelementptr %type.TypeNode* %25, i32 0, i32 8
	%27 = load i64* %26
	call void @sys_fildes_uint64(i32 2, i64 %27)
	br label %L.10
L.12:
	%28 = load %type.TypeNode** %t
	%29 = getelementptr %type.TypeNode* %28, i32 0, i32 7
	%30 = load i64* %29
	call void @sys_fildes_int64(i32 2, i64 %30)
	%31 = getelementptr [3 x i8]* @S.554
	%32 = bitcast [3 x i8]* %31 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %32)
	%33 = load %type.TypeNode** %t
	%34 = getelementptr %type.TypeNode* %33, i32 0, i32 8
	%35 = load i64* %34
	call void @sys_fildes_int64(i32 2, i64 %35)
	br label %L.10
L.13:
	call void @sys_fildes_chr(i32 2, i8 40)
	%36 = load %type.TypeNode** %t
	%37 = getelementptr %type.TypeNode* %36, i32 0, i32 4
	%38 = load %symb.SymbNode** %37
	%39 = bitcast %symb.SymbNode* %38 to %symb.SymbNode*
	store %symb.SymbNode* %39, %symb.SymbNode** %s
	br label %L.19
L.19:
	%40 = load %symb.SymbNode** %s
	%41 = icmp ne %symb.SymbNode* %40, null
	%42 = xor i1 %41, true
	br i1 %42, label %L.20, label %L.21
L.21:
	%43 = load %symb.SymbNode** %s
	%44 = getelementptr %symb.SymbNode* %43, i32 0, i32 22
	%45 = getelementptr [0 x i8]* %44
	%46 = bitcast [0 x i8]* %45 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %46)
	call void @sys_fildes_chr(i32 2, i8 61)
	%47 = load %symb.SymbNode** %s
	%48 = getelementptr %symb.SymbNode* %47, i32 0, i32 8
	%49 = load %ast.AstNode** %48
	%50 = getelementptr %ast.AstNode* %49, i32 0, i32 10
	%51 = load i64* %50
	%52 = trunc i64 %51 to i32
	call void @sys_fildes_uint32(i32 2, i32 %52)
	%53 = load %symb.SymbNode** %s
	%54 = getelementptr %symb.SymbNode* %53, i32 0, i32 0
	%55 = load %symb.SymbNode** %54
	%56 = bitcast %symb.SymbNode* %55 to %symb.SymbNode*
	store %symb.SymbNode* %56, %symb.SymbNode** %s
	%57 = load %symb.SymbNode** %s
	%58 = icmp eq %symb.SymbNode* %57, null
	br i1 %58, label %L.20, label %L.22
L.22:
	%59 = getelementptr [3 x i8]* @S.555
	%60 = bitcast [3 x i8]* %59 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %60)
	br label %L.19
L.20:
	call void @sys_fildes_chr(i32 2, i8 41)
	br label %L.10
L.14:
	%61 = getelementptr [8 x i8]* @S.556
	%62 = bitcast [8 x i8]* %61 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %62)
	br label %L.10
L.15:
	%63 = getelementptr [3 x i8]* @S.557
	%64 = bitcast [3 x i8]* %63 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %64)
	store i16 0, i16* %offs
	%65 = load %type.TypeNode** %t
	%66 = getelementptr %type.TypeNode* %65, i32 0, i32 4
	%67 = load %symb.SymbNode** %66
	%68 = bitcast %symb.SymbNode* %67 to %symb.SymbNode*
	store %symb.SymbNode* %68, %symb.SymbNode** %s
	br label %L.23
L.23:
	%69 = load %symb.SymbNode** %s
	%70 = icmp ne %symb.SymbNode* %69, null
	%71 = xor i1 %70, true
	br i1 %71, label %L.24, label %L.25
L.25:
	%72 = bitcast [65 x i8]* @type_blanks to [0 x i8]*
	%73 = load i32* %indent
	%74 = add i32 %73, 2
	call void @sys_fildes_strn(i32 2, [0 x i8]* %72, i32 %74)
	%75 = load %symb.SymbNode** %s
	%76 = getelementptr %symb.SymbNode* %75, i32 0, i32 22
	%77 = getelementptr [0 x i8]* %76
	%78 = bitcast [0 x i8]* %77 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %78)
	%79 = getelementptr [3 x i8]* @S.558
	%80 = bitcast [3 x i8]* %79 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %80)
	%81 = load %type.TypeNode** %t
	%82 = getelementptr %type.TypeNode* %81, i32 0, i32 21
	%83 = load i8* %82
	%84 = icmp ne i8 %83, 0
	br i1 %84, label %L.27, label %L.28
L.27:
	%85 = load i16* %offs
	call void @sys_fildes_uint16(i32 2, i16 %85)
	br label %L.26
L.28:
	%86 = getelementptr [3 x i8]* @S.559
	%87 = bitcast [3 x i8]* %86 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %87)
	%88 = load i16* %offs
	call void @sys_fildes_hex16(i32 2, i16 %88)
	br label %L.26
L.26:
	%89 = getelementptr [4 x i8]* @S.560
	%90 = bitcast [4 x i8]* %89 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %90)
	%91 = load %symb.SymbNode** %s
	%92 = getelementptr %symb.SymbNode* %91, i32 0, i32 1
	%93 = load %type.TypeNode** %92
	%94 = load i32* %indent
	%95 = add i32 %94, 2
	%96 = load i8* %full
	call void @type_Dump2(%type.TypeNode* %93, i32 %95, i8 %96)
	%97 = load %type.TypeNode** %t
	%98 = getelementptr %type.TypeNode* %97, i32 0, i32 21
	%99 = load i8* %98
	%100 = icmp ne i8 %99, 0
	br i1 %100, label %L.30, label %L.31
L.30:
	%101 = load i16* %offs
	%102 = load %symb.SymbNode** %s
	%103 = getelementptr %symb.SymbNode* %102, i32 0, i32 1
	%104 = load %type.TypeNode** %103
	%105 = getelementptr %type.TypeNode* %104, i32 0, i32 9
	%106 = load i32* %105
	%107 = trunc i32 %106 to i16
	%108 = add i16 %101, %107
	store i16 %108, i16* %offs
	br label %L.29
L.31:
	%109 = load i16* %offs
	%110 = load %symb.SymbNode** %s
	%111 = getelementptr %symb.SymbNode* %110, i32 0, i32 1
	%112 = load %type.TypeNode** %111
	%113 = getelementptr %type.TypeNode* %112, i32 0, i32 10
	%114 = load i32* %113
	%115 = load %target.ModelT** @target_Target
	%116 = getelementptr %target.ModelT* %115, i32 0, i32 2
	%117 = load i8* %116
	%118 = zext i8 %117 to i32
	%119 = udiv i32 %114, %118
	%120 = trunc i32 %119 to i16
	%121 = add i16 %109, %120
	store i16 %121, i16* %offs
	br label %L.29
L.29:
	call void @sys_fildes_nl(i32 2)
	%122 = load %symb.SymbNode** %s
	%123 = getelementptr %symb.SymbNode* %122, i32 0, i32 0
	%124 = load %symb.SymbNode** %123
	%125 = bitcast %symb.SymbNode* %124 to %symb.SymbNode*
	store %symb.SymbNode* %125, %symb.SymbNode** %s
	br label %L.23
L.24:
	call void @sys_fildes_chr(i32 2, i8 125)
	br label %L.10
L.16:
	call void @sys_fildes_chr(i32 2, i8 91)
	%126 = load %type.TypeNode** %t
	%127 = getelementptr %type.TypeNode* %126, i32 0, i32 25
	%128 = load i8* %127
	%129 = icmp ne i8 %128, 0
	br i1 %129, label %L.33, label %L.34
L.33:
	call void @sys_fildes_chr(i32 2, i8 42)
	br label %L.32
L.34:
	%130 = load %type.TypeNode** %t
	%131 = getelementptr %type.TypeNode* %130, i32 0, i32 7
	%132 = load i64* %131
	%133 = trunc i64 %132 to i32
	call void @sys_fildes_uint32(i32 2, i32 %133)
	%134 = getelementptr [3 x i8]* @S.561
	%135 = bitcast [3 x i8]* %134 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %135)
	%136 = load %type.TypeNode** %t
	%137 = getelementptr %type.TypeNode* %136, i32 0, i32 8
	%138 = load i64* %137
	%139 = trunc i64 %138 to i32
	call void @sys_fildes_uint32(i32 2, i32 %139)
	br label %L.32
L.32:
	call void @sys_fildes_chr(i32 2, i8 93)
	%140 = load %type.TypeNode** %t
	%141 = getelementptr %type.TypeNode* %140, i32 0, i32 0
	%142 = load %type.TypeNode** %141
	%143 = bitcast %type.TypeNode* %142 to %type.TypeNode*
	%144 = load i32* %indent
	%145 = load i8* %full
	call void @type_Dump2(%type.TypeNode* %143, i32 %144, i8 %145)
	br label %L.10
L.17:
	call void @sys_fildes_chr(i32 2, i8 64)
	%146 = load %type.TypeNode** %t
	%147 = getelementptr %type.TypeNode* %146, i32 0, i32 0
	%148 = load %type.TypeNode** %147
	%149 = icmp ne %type.TypeNode* %148, null
	br i1 %149, label %L.35, label %L.36
L.35:
	%150 = load %type.TypeNode** %t
	%151 = getelementptr %type.TypeNode* %150, i32 0, i32 0
	%152 = load %type.TypeNode** %151
	%153 = getelementptr %type.TypeNode* %152, i32 0, i32 3
	%154 = load %symb.SymbNode** %153
	%155 = icmp ne %symb.SymbNode* %154, null
	br label %L.36
L.36:
	%156 = phi i1 [ false, %L.17 ], [ %155, %L.35 ]
	br i1 %156, label %L.38, label %L.39
L.38:
	%157 = load %type.TypeNode** %t
	%158 = getelementptr %type.TypeNode* %157, i32 0, i32 0
	%159 = load %type.TypeNode** %158
	%160 = getelementptr %type.TypeNode* %159, i32 0, i32 3
	%161 = load %symb.SymbNode** %160
	%162 = getelementptr %symb.SymbNode* %161, i32 0, i32 22
	%163 = getelementptr [0 x i8]* %162
	%164 = bitcast [0 x i8]* %163 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %164)
	br label %L.37
L.39:
	%165 = load %type.TypeNode** %t
	%166 = getelementptr %type.TypeNode* %165, i32 0, i32 0
	%167 = load %type.TypeNode** %166
	%168 = bitcast %type.TypeNode* %167 to %type.TypeNode*
	%169 = load i32* %indent
	%170 = load i8* %full
	call void @type_Dump2(%type.TypeNode* %168, i32 %169, i8 %170)
	br label %L.37
L.37:
	br label %L.10
L.18:
	%171 = getelementptr [3 x i8]* @S.562
	%172 = bitcast [3 x i8]* %171 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %172)
	%173 = load %type.TypeNode** %t
	%174 = getelementptr %type.TypeNode* %173, i32 0, i32 4
	%175 = load %symb.SymbNode** %174
	%176 = getelementptr %symb.SymbNode* %175, i32 0, i32 3
	%177 = load %symb.SymbNode** %176
	%178 = bitcast %symb.SymbNode* %177 to %symb.SymbNode*
	call void @symb_DumpFormals(%symb.SymbNode* %178)
	br label %L.10
L.9:
	%179 = getelementptr [10 x i8]* @S.563
	%180 = bitcast [10 x i8]* %179 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %180)
	br label %L.10
L.10:
	%181 = getelementptr [7 x i8]* @S.564
	%182 = bitcast [7 x i8]* %181 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %182)
	%183 = load %type.TypeNode** %t
	%184 = getelementptr %type.TypeNode* %183, i32 0, i32 9
	%185 = load i32* %184
	call void @sys_fildes_uint(i32 2, i32 %185)
	call void @sys_fildes_chr(i32 2, i8 58)
	%186 = load %type.TypeNode** %t
	%187 = getelementptr %type.TypeNode* %186, i32 0, i32 10
	%188 = load i32* %187
	call void @sys_fildes_uint(i32 2, i32 %188)
	call void @sys_fildes_chr(i32 2, i8 58)
	%189 = load %type.TypeNode** %t
	%190 = getelementptr %type.TypeNode* %189, i32 0, i32 11
	%191 = load i32* %190
	call void @sys_fildes_uint(i32 2, i32 %191)
	%192 = getelementptr [7 x i8]* @S.565
	%193 = bitcast [7 x i8]* %192 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %193)
	%194 = load %type.TypeNode** %t
	%195 = getelementptr %type.TypeNode* %194, i32 0, i32 22
	%196 = load i8* %195
	%197 = icmp ne i8 %196, 0
	br i1 %197, label %L.41, label %L.40
L.41:
	%198 = getelementptr [8 x i8]* @S.566
	%199 = bitcast [8 x i8]* %198 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %199)
	br label %L.40
L.40:
	%200 = load %type.TypeNode** %t
	%201 = getelementptr %type.TypeNode* %200, i32 0, i32 21
	%202 = load i8* %201
	%203 = icmp ne i8 %202, 0
	br i1 %203, label %L.43, label %L.42
L.43:
	%204 = getelementptr [8 x i8]* @S.567
	%205 = bitcast [8 x i8]* %204 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %205)
	br label %L.42
L.42:
	%206 = load %type.TypeNode** %t
	%207 = getelementptr %type.TypeNode* %206, i32 0, i32 23
	%208 = load i8* %207
	%209 = icmp ne i8 %208, 0
	br i1 %209, label %L.45, label %L.44
L.45:
	%210 = getelementptr [8 x i8]* @S.568
	%211 = bitcast [8 x i8]* %210 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %211)
	br label %L.44
L.44:
	%212 = load %type.TypeNode** %t
	%213 = getelementptr %type.TypeNode* %212, i32 0, i32 24
	%214 = load i8* %213
	%215 = icmp ne i8 %214, 0
	br i1 %215, label %L.47, label %L.46
L.47:
	%216 = getelementptr [8 x i8]* @S.569
	%217 = bitcast [8 x i8]* %216 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %217)
	br label %L.46
L.46:
	call void @sys_fildes_chr(i32 2, i8 58)
	%218 = load %type.TypeNode** %t
	%219 = getelementptr %type.TypeNode* %218, i32 0, i32 16
	%220 = load i8* %219
	%221 = load %target.ModelT** @target_Target
	%222 = getelementptr %target.ModelT* %221, i32 0, i32 0
	%223 = load i8* %222
	%224 = icmp ne i8 %220, %223
	br i1 %224, label %L.49, label %L.48
L.49:
	%225 = load %type.TypeNode** %t
	%226 = getelementptr %type.TypeNode* %225, i32 0, i32 16
	%227 = load i8* %226
	%228 = zext i8 %227 to i32
	%229 = getelementptr [3 x [0 x i8]*]* @type_memorderstr, i32 0, i32 %228
	%230 = load [0 x i8]** %229
	%231 = bitcast [0 x i8]* %230 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %231)
	br label %L.48
L.48:
	call void @sys_fildes_chr(i32 2, i8 58)
	%232 = load %type.TypeNode** %t
	%233 = getelementptr %type.TypeNode* %232, i32 0, i32 15
	%234 = load i8* %233
	%235 = load %target.ModelT** @target_Target
	%236 = getelementptr %target.ModelT* %235, i32 0, i32 1
	%237 = load i8* %236
	%238 = icmp ne i8 %234, %237
	br i1 %238, label %L.51, label %L.50
L.51:
	%239 = load %type.TypeNode** %t
	%240 = getelementptr %type.TypeNode* %239, i32 0, i32 15
	%241 = load i8* %240
	%242 = zext i8 %241 to i32
	%243 = getelementptr [3 x [0 x i8]*]* @type_bitorderstr, i32 0, i32 %242
	%244 = load [0 x i8]** %243
	%245 = bitcast [0 x i8]* %244 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %245)
	br label %L.50
L.50:
	call void @sys_fildes_chr(i32 2, i8 58)
	%246 = load %type.TypeNode** %t
	%247 = getelementptr %type.TypeNode* %246, i32 0, i32 17
	%248 = load i8* %247
	%249 = icmp ne i8 %248, 0
	br i1 %249, label %L.53, label %L.52
L.53:
	%250 = load %type.TypeNode** %t
	%251 = getelementptr %type.TypeNode* %250, i32 0, i32 17
	%252 = load i8* %251
	%253 = zext i8 %252 to i32
	%254 = getelementptr [3 x [0 x i8]*]* @type_accessstr, i32 0, i32 %253
	%255 = load [0 x i8]** %254
	%256 = bitcast [0 x i8]* %255 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %256)
	br label %L.52
L.52:
	call void @sys_fildes_chr(i32 2, i8 58)
	%257 = load %type.TypeNode** %t
	%258 = getelementptr %type.TypeNode* %257, i32 0, i32 26
	%259 = load i8* %258
	%260 = icmp ne i8 %259, 0
	br i1 %260, label %L.55, label %L.54
L.55:
	call void @sys_fildes_chr(i32 2, i8 73)
	br label %L.54
L.54:
	%261 = load %type.TypeNode** %t
	%262 = getelementptr %type.TypeNode* %261, i32 0, i32 27
	%263 = load i8* %262
	%264 = icmp ne i8 %263, 0
	br i1 %264, label %L.57, label %L.56
L.57:
	call void @sys_fildes_chr(i32 2, i8 79)
	br label %L.56
L.56:
	%265 = load %type.TypeNode** %t
	%266 = getelementptr %type.TypeNode* %265, i32 0, i32 29
	store i8 1, i8* %266
	%267 = load %type.TypeNode** %t
	%268 = getelementptr %type.TypeNode* %267, i32 0, i32 5
	%269 = load %symb.SymbNode** %268
	%270 = icmp ne %symb.SymbNode* %269, null
	br i1 %270, label %L.59, label %L.58
L.59:
	%271 = load %type.TypeNode** %t
	%272 = getelementptr %type.TypeNode* %271, i32 0, i32 5
	%273 = load %symb.SymbNode** %272
	%274 = bitcast %symb.SymbNode* %273 to %symb.SymbNode*
	store %symb.SymbNode* %274, %symb.SymbNode** %s
	%275 = getelementptr [13 x i8]* @S.570
	%276 = bitcast [13 x i8]* %275 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %276)
	br label %L.60
L.60:
	%277 = load %symb.SymbNode** %s
	call void @symb_DumpS(%symb.SymbNode* %277)
	%278 = load %symb.SymbNode** %s
	%279 = getelementptr %symb.SymbNode* %278, i32 0, i32 0
	%280 = load %symb.SymbNode** %279
	%281 = bitcast %symb.SymbNode* %280 to %symb.SymbNode*
	store %symb.SymbNode* %281, %symb.SymbNode** %s
	%282 = load %symb.SymbNode** %s
	%283 = icmp eq %symb.SymbNode* %282, null
	br i1 %283, label %L.61, label %L.62
L.62:
	call void @sys_fildes_chr(i32 2, i8 9)
	br label %L.60
L.61:
	br label %L.58
L.58:
	br label %L.6
L.6:
	br label %L.1
L.3:
	%284 = getelementptr [4 x i8]* @S.571
	%285 = bitcast [4 x i8]* %284 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %285)
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
define internal void @type_DumpT(%type.TypeNode* %t$, i8 zeroext %full$) nounwind {
L.0:
	%t = alloca %type.TypeNode*
	%full = alloca i8
	store %type.TypeNode* %t$, %type.TypeNode** %t
	store i8 %full$, i8* %full
	%0 = load %type.TypeNode** %t
	%1 = load i8* %full
	call void @type_Dump2(%type.TypeNode* %0, i32 0, i8 %1)
	br label %return
return:
	ret void
}
@expr_skiplist = internal constant [4 x i8] [ i8 33, i8 37, i8 4, i8 0 ], align 1
@expr_proplist = internal constant [7 x i8] [ i8 88, i8 89, i8 90, i8 91, i8 83, i8 92, i8 0 ], align 1
define internal %ast.AstNode* @expr_Property(%ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%tree = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	%tok = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	store %type.TypeNode* %2, %type.TypeNode** %t
	%3 = load %ast.AstNode** %node
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 0
	%5 = load i8* %4
	%6 = zext i8 %5 to i32
	switch i32 %6, label %L.1 [
		i32 2, label %L.3
		i32 7, label %L.3
		i32 12, label %L.4
		i32 13, label %L.4
		i32 14, label %L.4
	]
L.3:
	br label %L.2
L.4:
	%7 = load %type.TypeNode** %t
	%8 = getelementptr %type.TypeNode* %7, i32 0, i32 0
	%9 = load %type.TypeNode** %8
	%10 = bitcast %type.TypeNode* %9 to %type.TypeNode*
	store %type.TypeNode* %10, %type.TypeNode** %t
	br label %L.2
L.1:
	store %ast.AstNode* null, %ast.AstNode** %rv.0
	br label %return
L.2:
	%11 = load i8* @lex_Token
	store i8 %11, i8* %tok
	%12 = load i8* %tok
	%13 = icmp eq i8 %12, 41
	br i1 %13, label %L.6, label %L.7
L.6:
	%14 = bitcast [7 x i8]* @expr_proplist to [0 x i8]*
	%15 = call i8 @lex_Keyword([0 x i8]* %14)
	store i8 %15, i8* %tok
	%16 = load %type.TypeNode** %t
	%17 = icmp ne %type.TypeNode* %16, null
	br i1 %17, label %L.9, label %L.10
L.9:
	%18 = load i8* %tok
	%19 = zext i8 %18 to i32
	switch i32 %19, label %L.11 [
		i32 88, label %L.13
		i32 89, label %L.14
		i32 90, label %L.15
		i32 91, label %L.16
		i32 83, label %L.17
		i32 92, label %L.18
	]
L.13:
	%20 = load %type.TypeNode** %t
	%21 = load %type.TypeNode** %t
	%22 = getelementptr %type.TypeNode* %21, i32 0, i32 7
	%23 = load i64* %22
	%24 = call %ast.AstNode* @ast_Const(%type.TypeNode* %20, i64 %23)
	store %ast.AstNode* %24, %ast.AstNode** %tree
	br label %L.12
L.14:
	%25 = load %type.TypeNode** %t
	%26 = load %type.TypeNode** %t
	%27 = getelementptr %type.TypeNode* %26, i32 0, i32 8
	%28 = load i64* %27
	%29 = call %ast.AstNode* @ast_Const(%type.TypeNode* %25, i64 %28)
	store %ast.AstNode* %29, %ast.AstNode** %tree
	br label %L.12
L.15:
	%30 = load %type.TypeNode** @type_wordtype
	%31 = load %type.TypeNode** %t
	%32 = getelementptr %type.TypeNode* %31, i32 0, i32 9
	%33 = load i32* %32
	%34 = zext i32 %33 to i64
	%35 = call %ast.AstNode* @ast_Const(%type.TypeNode* %30, i64 %34)
	store %ast.AstNode* %35, %ast.AstNode** %tree
	br label %L.12
L.16:
	%36 = load %type.TypeNode** @type_wordtype
	%37 = load %type.TypeNode** %t
	%38 = getelementptr %type.TypeNode* %37, i32 0, i32 10
	%39 = load i32* %38
	%40 = zext i32 %39 to i64
	%41 = load %target.ModelT** @target_Target
	%42 = getelementptr %target.ModelT* %41, i32 0, i32 2
	%43 = load i8* %42
	%44 = zext i8 %43 to i64
	%45 = udiv i64 %40, %44
	%46 = call %ast.AstNode* @ast_Const(%type.TypeNode* %36, i64 %45)
	store %ast.AstNode* %46, %ast.AstNode** %tree
	br label %L.12
L.17:
	%47 = load %type.TypeNode** @type_wordtype
	%48 = load %type.TypeNode** %t
	%49 = getelementptr %type.TypeNode* %48, i32 0, i32 11
	%50 = load i32* %49
	%51 = zext i32 %50 to i64
	%52 = load %target.ModelT** @target_Target
	%53 = getelementptr %target.ModelT* %52, i32 0, i32 2
	%54 = load i8* %53
	%55 = zext i8 %54 to i64
	%56 = udiv i64 %51, %55
	%57 = call %ast.AstNode* @ast_Const(%type.TypeNode* %47, i64 %56)
	store %ast.AstNode* %57, %ast.AstNode** %tree
	br label %L.12
L.18:
	%58 = load %type.TypeNode** %t
	%59 = getelementptr %type.TypeNode* %58, i32 0, i32 14
	%60 = load i8* %59
	%61 = icmp eq i8 %60, 6
	br i1 %61, label %L.20, label %L.21
L.20:
	%62 = load %type.TypeNode** @type_wordtype
	%63 = load %type.TypeNode** %t
	%64 = call i32 @type_TypeNode_Span(%type.TypeNode* %63)
	%65 = zext i32 %64 to i64
	%66 = call %ast.AstNode* @ast_Const(%type.TypeNode* %62, i64 %65)
	store %ast.AstNode* %66, %ast.AstNode** %tree
	br label %L.19
L.21:
	call void @lex_Error(i8 30)
	br label %L.19
L.19:
	br label %L.12
L.11:
	call void @lex_Error(i8 53)
	br label %L.12
L.12:
	br label %L.8
L.10:
	%67 = load %type.TypeNode** @type_wordtype
	%68 = call %ast.AstNode* @ast_Const(%type.TypeNode* %67, i64 0)
	store %ast.AstNode* %68, %ast.AstNode** %tree
	br label %L.8
L.8:
	br label %L.5
L.7:
	call void @lex_Error(i8 53)
	br label %L.5
L.5:
	%69 = call i8 @lex_Next()
	store i8 %69, i8* %tok
	%70 = load %ast.AstNode** %tree
	store %ast.AstNode* %70, %ast.AstNode** %rv.0
	br label %return
return:
	%71 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %71
}
@expr_strid = internal global i64 0, align 4
define internal %ast.AstNode* @expr_NewString() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	%0 = call %type.TypeNode* @type_New(i8 6)
	store %type.TypeNode* %0, %type.TypeNode** %t
	%1 = load %type.TypeNode** @type_bytetype
	%2 = bitcast %type.TypeNode* %1 to %type.TypeNode*
	%3 = load %type.TypeNode** %t
	%4 = getelementptr %type.TypeNode* %3, i32 0, i32 0
	store %type.TypeNode* %2, %type.TypeNode** %4
	%5 = load %type.TypeNode** @type_wordtype
	%6 = bitcast %type.TypeNode* %5 to %type.TypeNode*
	%7 = load %type.TypeNode** %t
	%8 = getelementptr %type.TypeNode* %7, i32 0, i32 2
	store %type.TypeNode* %6, %type.TypeNode** %8
	%9 = load %type.TypeNode** %t
	%10 = getelementptr %type.TypeNode* %9, i32 0, i32 7
	store i64 0, i64* %10
	%11 = load i16* @lex_StringLen
	%12 = zext i16 %11 to i64
	%13 = sub i64 %12, 1
	%14 = load %type.TypeNode** %t
	%15 = getelementptr %type.TypeNode* %14, i32 0, i32 8
	store i64 %13, i64* %15
	%16 = load %type.TypeNode** %t
	%17 = getelementptr %type.TypeNode* %16, i32 0, i32 0
	%18 = load %type.TypeNode** %17
	%19 = getelementptr %type.TypeNode* %18, i32 0, i32 11
	%20 = load i32* %19
	%21 = load %type.TypeNode** %t
	%22 = getelementptr %type.TypeNode* %21, i32 0, i32 11
	store i32 %20, i32* %22
	%23 = load %target.ModelT** @target_Target
	%24 = getelementptr %target.ModelT* %23, i32 0, i32 0
	%25 = load i8* %24
	%26 = load %type.TypeNode** %t
	%27 = getelementptr %type.TypeNode* %26, i32 0, i32 16
	store i8 %25, i8* %27
	%28 = load %type.TypeNode** %t
	%29 = call %ast.AstNode* @ast_New(i8 9, %type.TypeNode* %28)
	store %ast.AstNode* %29, %ast.AstNode** %tree
	%30 = bitcast [4096 x i8]* @lex_StringBuf to [0 x i8]*
	%31 = call %symb.SymbNode* @symb_NewString([0 x i8]* %30)
	%32 = load %ast.AstNode** %tree
	%33 = getelementptr %ast.AstNode* %32, i32 0, i32 9
	store %symb.SymbNode* %31, %symb.SymbNode** %33
	%34 = load i64* @expr_strid
	%35 = add i64 %34, 1
	store i64 %35, i64* @expr_strid
	%36 = load i64* @expr_strid
	%37 = load %ast.AstNode** %tree
	%38 = getelementptr %ast.AstNode* %37, i32 0, i32 10
	store i64 %36, i64* %38
	%39 = load %ast.AstNode** %tree
	store %ast.AstNode* %39, %ast.AstNode** %rv.0
	br label %return
return:
	%40 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %40
}
define internal %ast.AstNode* @expr_StringCat(%ast.AstNode* %tree$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	%sr = alloca [0 x i8]*
	%t = alloca %type.TypeNode*
	%nl = alloca i32
	%nr = alloca i32
	%i = alloca i32
	%0 = load %ast.AstNode** %tree
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	store %type.TypeNode* %2, %type.TypeNode** %t
	%3 = load %type.TypeNode** %t
	%4 = getelementptr %type.TypeNode* %3, i32 0, i32 8
	%5 = load i64* %4
	%6 = sub i64 %5, 1
	%7 = trunc i64 %6 to i32
	store i32 %7, i32* %nl
	%8 = load i16* @lex_StringLen
	%9 = zext i16 %8 to i32
	store i32 %9, i32* %nr
	%10 = load i32* %nl
	%11 = zext i32 %10 to i64
	%12 = load i32* %nr
	%13 = zext i32 %12 to i64
	%14 = add i64 %11, %13
	%15 = load %type.TypeNode** %t
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 8
	store i64 %14, i64* %16
	%17 = load i32* %nr
	store i32 %17, i32* %i
	br label %L.1
L.1:
	%18 = load i32* %i
	%19 = getelementptr [4096 x i8]* @lex_StringBuf, i32 0, i32 %18
	%20 = load i8* %19
	%21 = load i32* %i
	%22 = load i32* %nl
	%23 = add i32 %21, %22
	%24 = getelementptr [4096 x i8]* @lex_StringBuf, i32 0, i32 %23
	store i8 %20, i8* %24
	%25 = load i32* %i
	%26 = icmp eq i32 %25, 0
	br i1 %26, label %L.2, label %L.3
L.3:
	%27 = load i32* %i
	%28 = sub i32 %27, 1
	store i32 %28, i32* %i
	br label %L.1
L.2:
	%29 = load %ast.AstNode** %tree
	%30 = getelementptr %ast.AstNode* %29, i32 0, i32 9
	%31 = load %symb.SymbNode** %30
	%32 = getelementptr %symb.SymbNode* %31, i32 0, i32 22
	%33 = getelementptr [0 x i8]* %32
	%34 = bitcast [0 x i8]* %33 to [0 x i8]*
	store [0 x i8]* %34, [0 x i8]** %sr
	%35 = getelementptr [4096 x i8]* @lex_StringBuf, i32 0, i32 0
	%36 = bitcast i8* %35 to [4096 x i8]*
	%37 = bitcast [4096 x i8]* %36 to [0 x i8]*
	%38 = bitcast [0 x i8]* %37 to i8*
	%39 = load [0 x i8]** %sr
	%40 = getelementptr [0 x i8]* %39, i32 0, i32 0
	%41 = bitcast i8* %40 to [0 x i8]*
	%42 = bitcast [0 x i8]* %41 to i8*
	%43 = load i32* %nl
	%44 = load i32* %nl
	%45 = icmp ult i32 %43, %44
	%46 = select i1 %45, i32 %43, i32 %44
	%47 = mul i32 %46, 1
	call void @llvm.memcpy.p0i8.p0i8.i32(i8* %38, i8* %42, i32 %47, i32 1, i1 0)
	%48 = bitcast [4096 x i8]* @lex_StringBuf to [0 x i8]*
	%49 = call %symb.SymbNode* @symb_NewString([0 x i8]* %48)
	%50 = load %ast.AstNode** %tree
	%51 = getelementptr %ast.AstNode* %50, i32 0, i32 9
	store %symb.SymbNode* %49, %symb.SymbNode** %51
	%52 = load %ast.AstNode** %tree
	store %ast.AstNode* %52, %ast.AstNode** %rv.0
	br label %return
return:
	%53 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %53
}
define internal %ast.AstNode* @expr_String() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%tok = alloca i8
	%0 = call %ast.AstNode* @expr_NewString()
	store %ast.AstNode* %0, %ast.AstNode** %tree
	br label %L.1
L.1:
	%1 = call i8 @lex_Next()
	store i8 %1, i8* %tok
	%2 = load i8* %tok
	%3 = icmp ne i8 %2, 40
	br i1 %3, label %L.2, label %L.3
L.3:
	%4 = load %ast.AstNode** %tree
	%5 = call %ast.AstNode* @expr_StringCat(%ast.AstNode* %4)
	store %ast.AstNode* %5, %ast.AstNode** %tree
	br label %L.1
L.2:
	%6 = load %ast.AstNode** %tree
	store %ast.AstNode* %6, %ast.AstNode** %rv.0
	br label %return
return:
	%7 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %7
}
define internal %ast.AstNode* @expr_EnumConst(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%s = alloca %symb.SymbNode*
	%tree = alloca %ast.AstNode*
	%0 = load %type.TypeNode** %t
	%1 = getelementptr %type.TypeNode* %0, i32 0, i32 4
	%2 = load %symb.SymbNode** %1
	%3 = bitcast %symb.SymbNode* %2 to %symb.SymbNode*
	store %symb.SymbNode* %3, %symb.SymbNode** %s
	br label %L.1
L.1:
	%4 = load %symb.SymbNode** %s
	%5 = icmp ne %symb.SymbNode* %4, null
	%6 = xor i1 %5, true
	br i1 %6, label %L.2, label %L.3
L.3:
	%7 = load %symb.SymbNode** %s
	%8 = getelementptr %symb.SymbNode* %7, i32 0, i32 22
	%9 = getelementptr [0 x i8]* %8
	%10 = bitcast [0 x i8]* %9 to [0 x i8]*
	%11 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%12 = call i8 @zstr_eq([0 x i8]* %10, [0 x i8]* %11, i32 255)
	%13 = icmp ne i8 %12, 0
	br i1 %13, label %L.5, label %L.4
L.5:
	%14 = load %symb.SymbNode** %s
	%15 = getelementptr %symb.SymbNode* %14, i32 0, i32 8
	%16 = load %ast.AstNode** %15
	%17 = bitcast %ast.AstNode* %16 to %ast.AstNode*
	%18 = call %ast.AstNode* @ast_Dup(%ast.AstNode* %17)
	store %ast.AstNode* %18, %ast.AstNode** %tree
	%19 = load %symb.SymbNode** %s
	%20 = getelementptr %symb.SymbNode* %19, i32 0, i32 8
	%21 = load %ast.AstNode** %20
	%22 = getelementptr %ast.AstNode* %21, i32 0, i32 8
	%23 = load %type.TypeNode** %22
	%24 = getelementptr %type.TypeNode* %23, i32 0, i32 10
	%25 = load i32* %24
	%26 = load %ast.AstNode** %tree
	%27 = getelementptr %ast.AstNode* %26, i32 0, i32 7
	store i32 %25, i32* %27
	%28 = load %ast.AstNode** %tree
	store %ast.AstNode* %28, %ast.AstNode** %rv.0
	br label %return
L.4:
	%29 = load %symb.SymbNode** %s
	%30 = getelementptr %symb.SymbNode* %29, i32 0, i32 0
	%31 = load %symb.SymbNode** %30
	%32 = bitcast %symb.SymbNode* %31 to %symb.SymbNode*
	store %symb.SymbNode* %32, %symb.SymbNode** %s
	br label %L.1
L.2:
	%33 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 19, [0 x i8]* %33)
	store %ast.AstNode* null, %ast.AstNode** %rv.0
	br label %return
return:
	%34 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %34
}
define internal zeroext i8 @expr_IsAggregateConst(%ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca i8
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%i = alloca i16
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 0
	%2 = load i8* %1
	%3 = zext i8 %2 to i32
	switch i32 %3, label %L.1 [
		i32 9, label %L.3
		i32 8, label %L.3
		i32 7, label %L.3
		i32 12, label %L.4
		i32 16, label %L.5
		i32 17, label %L.5
		i32 10, label %L.6
	]
L.3:
	store i8 1, i8* %rv.0
	br label %return
L.4:
	%4 = load %ast.AstNode** %node
	%5 = getelementptr %ast.AstNode* %4, i32 0, i32 8
	%6 = load %type.TypeNode** %5
	%7 = getelementptr %type.TypeNode* %6, i32 0, i32 14
	%8 = load i8* %7
	%9 = icmp eq i8 %8, 8
	br i1 %9, label %L.8, label %L.9
L.8:
	%10 = load %ast.AstNode** %node
	%11 = getelementptr %ast.AstNode* %10, i32 0, i32 9
	%12 = load %symb.SymbNode** %11
	%13 = getelementptr %symb.SymbNode* %12, i32 0, i32 13
	%14 = load i8* %13
	%15 = icmp eq i8 %14, 5
	%16 = zext i1 %15 to i8
	store i8 %16, i8* %rv.0
	br label %return
L.9:
	%17 = load %ast.AstNode** %node
	%18 = getelementptr %ast.AstNode* %17, i32 0, i32 9
	%19 = load %symb.SymbNode** %18
	%20 = getelementptr %symb.SymbNode* %19, i32 0, i32 13
	%21 = load i8* %20
	%22 = icmp eq i8 %21, 1
	%23 = zext i1 %22 to i8
	store i8 %23, i8* %rv.0
	br label %return
L.7:
	br label %L.2
L.5:
	%24 = load %ast.AstNode** %node
	%25 = getelementptr %ast.AstNode* %24, i32 0, i32 11
	%26 = getelementptr [0 x %ast.AstNode*]* %25, i32 0, i32 0
	%27 = load %ast.AstNode** %26
	%28 = bitcast %ast.AstNode* %27 to %ast.AstNode*
	%29 = call i8 @expr_IsAggregateConst(%ast.AstNode* %28)
	store i8 %29, i8* %rv.0
	br label %return
L.6:
	store i16 0, i16* %i
	br label %L.10
L.10:
	%30 = load i16* %i
	%31 = load %ast.AstNode** %node
	%32 = getelementptr %ast.AstNode* %31, i32 0, i32 2
	%33 = load i16* %32
	%34 = icmp ult i16 %30, %33
	%35 = xor i1 %34, true
	br i1 %35, label %L.11, label %L.12
L.12:
	%36 = load %ast.AstNode** %node
	%37 = getelementptr %ast.AstNode* %36, i32 0, i32 11
	%38 = load i16* %i
	%39 = zext i16 %38 to i32
	%40 = getelementptr [0 x %ast.AstNode*]* %37, i32 0, i32 %39
	%41 = load %ast.AstNode** %40
	%42 = bitcast %ast.AstNode* %41 to %ast.AstNode*
	%43 = call i8 @expr_IsAggregateConst(%ast.AstNode* %42)
	%44 = icmp ne i8 %43, 0
	%45 = xor i1 %44, true
	br i1 %45, label %L.14, label %L.13
L.14:
	store i8 0, i8* %rv.0
	br label %return
L.13:
	%46 = load i16* %i
	%47 = add i16 %46, 1
	store i16 %47, i16* %i
	br label %L.10
L.11:
	store i8 1, i8* %rv.0
	br label %return
L.1:
	br label %L.2
L.2:
	store i8 0, i8* %rv.0
	br label %return
return:
	%48 = load i8* %rv.0
	ret i8 %48
}
define internal %ast.AstNode* @expr_CompositeNamedConstant(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%cs = alloca %symb.SymbNode*
	%ct = alloca %type.TypeNode*
	%tree = alloca %ast.AstNode*
	%tok = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%1 = call %symb.SymbNode* @symb_Find([0 x i8]* %0)
	store %symb.SymbNode* %1, %symb.SymbNode** %cs
	%2 = load %symb.SymbNode** %cs
	%3 = icmp ne %symb.SymbNode* %2, null
	br i1 %3, label %L.2, label %L.3
L.2:
	%4 = load %symb.SymbNode** %cs
	%5 = getelementptr %symb.SymbNode* %4, i32 0, i32 13
	%6 = load i8* %5
	%7 = icmp eq i8 %6, 1
	br i1 %7, label %L.5, label %L.6
L.5:
	%8 = load %symb.SymbNode** %cs
	%9 = getelementptr %symb.SymbNode* %8, i32 0, i32 1
	%10 = load %type.TypeNode** %9
	store %type.TypeNode* %10, %type.TypeNode** %ct
	%11 = load %type.TypeNode** %ct
	%12 = load %type.TypeNode** %t
	%13 = call i8 @type_Compat(%type.TypeNode* %11, %type.TypeNode* %12)
	%14 = icmp ne i8 %13, 0
	br i1 %14, label %L.8, label %L.9
L.8:
	%15 = load %symb.SymbNode** %cs
	%16 = getelementptr %symb.SymbNode* %15, i32 0, i32 8
	%17 = load %ast.AstNode** %16
	%18 = bitcast %ast.AstNode* %17 to %ast.AstNode*
	store %ast.AstNode* %18, %ast.AstNode** %tree
	%19 = load %type.TypeNode** %ct
	%20 = load %ast.AstNode** %tree
	%21 = getelementptr %ast.AstNode* %20, i32 0, i32 8
	store %type.TypeNode* %19, %type.TypeNode** %21
	br label %L.7
L.9:
	call void @lex_Error(i8 52)
	br label %L.7
L.7:
	%22 = call i8 @lex_Next()
	store i8 %22, i8* %tok
	br label %L.4
L.6:
	%23 = load %symb.SymbNode** %cs
	%24 = getelementptr %symb.SymbNode* %23, i32 0, i32 13
	%25 = load i8* %24
	%26 = icmp eq i8 %25, 2
	br i1 %26, label %L.11, label %L.12
L.11:
	%27 = call i8 @lex_Next()
	store i8 %27, i8* %tok
	%28 = load i8* %tok
	%29 = icmp eq i8 %28, 32
	br i1 %29, label %L.14, label %L.13
L.14:
	%30 = call i8 @lex_Next()
	store i8 %30, i8* %tok
	%31 = call %ast.AstNode* @expr_Bool(%type.TypeNode* null)
	store %ast.AstNode* %31, %ast.AstNode** %tree
	%32 = call i8 @lex_Expect(i8 33)
	%33 = load %ast.AstNode** %tree
	%34 = load %symb.SymbNode** %cs
	%35 = getelementptr %symb.SymbNode* %34, i32 0, i32 1
	%36 = load %type.TypeNode** %35
	%37 = call %ast.AstNode* @ast_Cast(%ast.AstNode* %33, %type.TypeNode* %36)
	store %ast.AstNode* %37, %ast.AstNode** %tree
	br label %L.13
L.13:
	br label %L.10
L.12:
	call void @lex_Error(i8 72)
	%38 = call i8 @lex_Next()
	store i8 %38, i8* %tok
	br label %L.10
L.10:
	br label %L.4
L.4:
	br label %L.1
L.3:
	%39 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 19, [0 x i8]* %39)
	br label %L.1
L.1:
	%40 = load %ast.AstNode** %tree
	store %ast.AstNode* %40, %ast.AstNode** %rv.0
	br label %return
return:
	%41 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %41
}
@S.574 = internal constant [26 x i8] c"No CLIST for packed array\00"
define internal %ast.AstNode* @expr_ArrayPack(%type.TypeNode* %t$, %ast.AstNode* %intree$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	%intree = alloca %ast.AstNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	store %ast.AstNode* %intree$, %ast.AstNode** %intree
	%offs = alloca i32
	%tsize = alloca i32
	%fsize = alloca i32
	%i = alloca i16
	%tree = alloca %ast.AstNode*
	%vpart = alloca %ast.AstNode*
	%node = alloca %ast.AstNode*
	%cpart = alloca i64
	%mask = alloca i64
	%bt = alloca %type.TypeNode*
	store %ast.AstNode* null, %ast.AstNode** %vpart
	store i64 0, i64* %cpart
	%0 = load %ast.AstNode** %intree
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 0
	%2 = load i8* %1
	%3 = icmp ne i8 %2, 10
	br i1 %3, label %L.2, label %L.1
L.2:
	%4 = getelementptr [26 x i8]* @S.574
	%5 = bitcast [26 x i8]* %4 to [0 x i8]*
	call void @lex_ErrorS(i8 86, [0 x i8]* %5)
	%6 = load %ast.AstNode** %tree
	store %ast.AstNode* %6, %ast.AstNode** %rv.0
	br label %return
L.1:
	%7 = load %type.TypeNode** %t
	%8 = getelementptr %type.TypeNode* %7, i32 0, i32 10
	%9 = load i32* %8
	store i32 %9, i32* %tsize
	%10 = load %type.TypeNode** %t
	%11 = getelementptr %type.TypeNode* %10, i32 0, i32 0
	%12 = load %type.TypeNode** %11
	%13 = bitcast %type.TypeNode* %12 to %type.TypeNode*
	store %type.TypeNode* %13, %type.TypeNode** %bt
	%14 = load %type.TypeNode** %bt
	%15 = getelementptr %type.TypeNode* %14, i32 0, i32 9
	%16 = load i32* %15
	store i32 %16, i32* %fsize
	%17 = load i32* %fsize
	%18 = zext i32 %17 to i64
	%19 = shl i64 1, %18
	%20 = sub i64 %19, 1
	store i64 %20, i64* %mask
	%21 = load %type.TypeNode** %t
	%22 = getelementptr %type.TypeNode* %21, i32 0, i32 15
	%23 = load i8* %22
	%24 = icmp eq i8 %23, 1
	br i1 %24, label %L.4, label %L.5
L.4:
	%25 = load i32* %tsize
	store i32 %25, i32* %offs
	br label %L.3
L.5:
	store i32 0, i32* %offs
	br label %L.3
L.3:
	store i16 0, i16* %i
	br label %L.6
L.6:
	%26 = load i16* %i
	%27 = load %ast.AstNode** %intree
	%28 = getelementptr %ast.AstNode* %27, i32 0, i32 2
	%29 = load i16* %28
	%30 = icmp ult i16 %26, %29
	%31 = xor i1 %30, true
	br i1 %31, label %L.7, label %L.8
L.8:
	%32 = load %type.TypeNode** %t
	%33 = getelementptr %type.TypeNode* %32, i32 0, i32 15
	%34 = load i8* %33
	%35 = icmp eq i8 %34, 1
	br i1 %35, label %L.10, label %L.9
L.10:
	%36 = load i32* %offs
	%37 = load i32* %fsize
	%38 = sub i32 %36, %37
	store i32 %38, i32* %offs
	br label %L.9
L.9:
	%39 = load %ast.AstNode** %intree
	%40 = getelementptr %ast.AstNode* %39, i32 0, i32 11
	%41 = load i16* %i
	%42 = zext i16 %41 to i32
	%43 = getelementptr [0 x %ast.AstNode*]* %40, i32 0, i32 %42
	%44 = load %ast.AstNode** %43
	%45 = bitcast %ast.AstNode* %44 to %ast.AstNode*
	store %ast.AstNode* %45, %ast.AstNode** %node
	%46 = load %ast.AstNode** %node
	%47 = getelementptr %ast.AstNode* %46, i32 0, i32 0
	%48 = load i8* %47
	%49 = icmp eq i8 %48, 7
	br i1 %49, label %L.12, label %L.13
L.12:
	%50 = load %ast.AstNode** %node
	%51 = load i32* %fsize
	call void @ast_CheckConstTruncate(%ast.AstNode* %50, i32 %51)
	%52 = load i64* %cpart
	%53 = load %ast.AstNode** %node
	%54 = getelementptr %ast.AstNode* %53, i32 0, i32 10
	%55 = load i64* %54
	%56 = load i64* %mask
	%57 = and i64 %55, %56
	%58 = load i32* %offs
	%59 = zext i32 %58 to i64
	%60 = shl i64 %57, %59
	%61 = or i64 %52, %60
	store i64 %61, i64* %cpart
	br label %L.11
L.13:
	%62 = load %ast.AstNode** %node
	%63 = load i32* %tsize
	%64 = call %ast.AstNode* @ast_Extend(%ast.AstNode* %62, i32 %63, i8 0)
	store %ast.AstNode* %64, %ast.AstNode** %node
	%65 = load %type.TypeNode** %bt
	%66 = load %ast.AstNode** %node
	%67 = load %type.TypeNode** @type_wordtype
	%68 = load i32* %offs
	%69 = zext i32 %68 to i64
	%70 = call %ast.AstNode* @ast_Const(%type.TypeNode* %67, i64 %69)
	%71 = call %ast.AstNode* @ast_New2(i8 68, %type.TypeNode* %65, %ast.AstNode* %66, %ast.AstNode* %70)
	store %ast.AstNode* %71, %ast.AstNode** %node
	%72 = load %ast.AstNode** %vpart
	%73 = icmp eq %ast.AstNode* %72, null
	br i1 %73, label %L.15, label %L.16
L.15:
	%74 = load %ast.AstNode** %node
	store %ast.AstNode* %74, %ast.AstNode** %vpart
	br label %L.14
L.16:
	%75 = load %type.TypeNode** %bt
	%76 = load %ast.AstNode** %vpart
	%77 = load %ast.AstNode** %node
	%78 = call %ast.AstNode* @ast_New2(i8 73, %type.TypeNode* %75, %ast.AstNode* %76, %ast.AstNode* %77)
	store %ast.AstNode* %78, %ast.AstNode** %vpart
	br label %L.14
L.14:
	br label %L.11
L.11:
	%79 = load %type.TypeNode** %t
	%80 = getelementptr %type.TypeNode* %79, i32 0, i32 15
	%81 = load i8* %80
	%82 = icmp ne i8 %81, 1
	br i1 %82, label %L.18, label %L.17
L.18:
	%83 = load i32* %offs
	%84 = load i32* %fsize
	%85 = add i32 %83, %84
	store i32 %85, i32* %offs
	br label %L.17
L.17:
	%86 = load i16* %i
	%87 = add i16 %86, 1
	store i16 %87, i16* %i
	br label %L.6
L.7:
	%88 = load %type.TypeNode** @type_wordtype
	%89 = load i64* %cpart
	%90 = call %ast.AstNode* @ast_Const(%type.TypeNode* %88, i64 %89)
	%91 = load i32* %tsize
	%92 = call %ast.AstNode* @ast_Extend(%ast.AstNode* %90, i32 %91, i8 0)
	store %ast.AstNode* %92, %ast.AstNode** %tree
	%93 = load %ast.AstNode** %vpart
	%94 = icmp ne %ast.AstNode* %93, null
	br i1 %94, label %L.20, label %L.19
L.20:
	%95 = load %type.TypeNode** @type_wordtype
	%96 = load %ast.AstNode** %tree
	%97 = load %ast.AstNode** %vpart
	%98 = call %ast.AstNode* @ast_New2(i8 73, %type.TypeNode* %95, %ast.AstNode* %96, %ast.AstNode* %97)
	store %ast.AstNode* %98, %ast.AstNode** %tree
	br label %L.19
L.19:
	%99 = load %type.TypeNode** %t
	%100 = load %ast.AstNode** %tree
	%101 = getelementptr %ast.AstNode* %100, i32 0, i32 8
	store %type.TypeNode* %99, %type.TypeNode** %101
	%102 = load %ast.AstNode** %tree
	store %ast.AstNode* %102, %ast.AstNode** %rv.0
	br label %return
return:
	%103 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %103
}
define internal %type.TypeNode* @expr_ArrayFixFlex(%type.TypeNode* %bt$, i32 %len$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%bt = alloca %type.TypeNode*
	%len = alloca i32
	store %type.TypeNode* %bt$, %type.TypeNode** %bt
	store i32 %len$, i32* %len
	%t = alloca %type.TypeNode*
	%0 = load %type.TypeNode** %bt
	%1 = call %type.TypeNode* @type_Clone(%type.TypeNode* %0)
	store %type.TypeNode* %1, %type.TypeNode** %t
	%2 = load %type.TypeNode** %t
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 25
	store i8 0, i8* %3
	%4 = load %type.TypeNode** %t
	%5 = getelementptr %type.TypeNode* %4, i32 0, i32 7
	store i64 0, i64* %5
	%6 = load i32* %len
	%7 = zext i32 %6 to i64
	%8 = sub i64 %7, 1
	%9 = load %type.TypeNode** %t
	%10 = getelementptr %type.TypeNode* %9, i32 0, i32 8
	store i64 %8, i64* %10
	%11 = load %type.TypeNode** %t
	%12 = getelementptr %type.TypeNode* %11, i32 0, i32 9
	store i32 0, i32* %12
	%13 = load %type.TypeNode** %t
	%14 = getelementptr %type.TypeNode* %13, i32 0, i32 10
	store i32 0, i32* %14
	%15 = load %type.TypeNode** %t
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 30
	store i8 0, i8* %16
	%17 = load %type.TypeNode** %t
	call void @type_Final(%type.TypeNode* %17)
	%18 = load %type.TypeNode** %t
	store %type.TypeNode* %18, %type.TypeNode** %rv.0
	br label %return
return:
	%19 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %19
}
define internal %ast.AstNode* @expr_ArrayConst(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tree = alloca %ast.AstNode*
	%stree = alloca %ast.AstNode*
	%i = alloca i16
	%j = alloca i16
	%m = alloca i16
	%n = alloca i16
	%tok = alloca i8
	%once = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 36
	br i1 %2, label %L.2, label %L.3
L.2:
	%3 = load %type.TypeNode** %t
	%4 = call %ast.AstNode* @ast_New(i8 10, %type.TypeNode* %3)
	store %ast.AstNode* %4, %ast.AstNode** %tree
	%5 = load i64* @expr_strid
	%6 = add i64 %5, 1
	store i64 %6, i64* @expr_strid
	%7 = load i64* @expr_strid
	%8 = load %ast.AstNode** %tree
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 10
	store i64 %7, i64* %9
	store i8 0, i8* %once
	%10 = load %type.TypeNode** %t
	%11 = getelementptr %type.TypeNode* %10, i32 0, i32 25
	%12 = load i8* %11
	%13 = icmp ne i8 %12, 0
	br i1 %13, label %L.5, label %L.6
L.5:
	store i16 0, i16* %n
	br label %L.4
L.6:
	%14 = load %type.TypeNode** %t
	%15 = call i32 @type_TypeNode_Span(%type.TypeNode* %14)
	%16 = trunc i32 %15 to i16
	store i16 %16, i16* %n
	br label %L.4
L.4:
	store i16 0, i16* %i
	store i16 0, i16* %m
	%17 = call i8 @lex_Next()
	store i8 %17, i8* %tok
	br label %L.7
L.7:
	%18 = load i16* %i
	store i16 %18, i16* %j
	%19 = load i8* %tok
	%20 = icmp eq i8 %19, 34
	br i1 %20, label %L.10, label %L.9
L.10:
	%21 = call i8 @lex_Next()
	store i8 %21, i8* %tok
	%22 = load %type.TypeNode** %t
	%23 = getelementptr %type.TypeNode* %22, i32 0, i32 2
	%24 = load %type.TypeNode** %23
	%25 = bitcast %type.TypeNode* %24 to %type.TypeNode*
	%26 = call i64 @expr_ConstValue(%type.TypeNode* %25)
	%27 = trunc i64 %26 to i16
	%28 = load %type.TypeNode** %t
	%29 = getelementptr %type.TypeNode* %28, i32 0, i32 7
	%30 = load i64* %29
	%31 = trunc i64 %30 to i16
	%32 = sub i16 %27, %31
	store i16 %32, i16* %i
	%33 = load i16* %i
	store i16 %33, i16* %j
	%34 = load i8* @lex_Token
	%35 = icmp eq i8 %34, 6
	br i1 %35, label %L.12, label %L.11
L.12:
	%36 = call i8 @lex_Next()
	store i8 %36, i8* %tok
	%37 = load %type.TypeNode** %t
	%38 = getelementptr %type.TypeNode* %37, i32 0, i32 2
	%39 = load %type.TypeNode** %38
	%40 = bitcast %type.TypeNode* %39 to %type.TypeNode*
	%41 = call i64 @expr_ConstValue(%type.TypeNode* %40)
	%42 = trunc i64 %41 to i16
	%43 = load %type.TypeNode** %t
	%44 = getelementptr %type.TypeNode* %43, i32 0, i32 7
	%45 = load i64* %44
	%46 = trunc i64 %45 to i16
	%47 = sub i16 %42, %46
	store i16 %47, i16* %j
	br label %L.11
L.11:
	%48 = call i8 @lex_Expect(i8 35)
	store i8 %48, i8* %tok
	%49 = call i8 @lex_Expect(i8 9)
	store i8 %49, i8* %tok
	br label %L.9
L.9:
	%50 = load %type.TypeNode** %t
	%51 = getelementptr %type.TypeNode* %50, i32 0, i32 0
	%52 = load %type.TypeNode** %51
	%53 = bitcast %type.TypeNode* %52 to %type.TypeNode*
	%54 = call %ast.AstNode* @expr_Const(%type.TypeNode* %53)
	store %ast.AstNode* %54, %ast.AstNode** %stree
	%55 = load i16* %n
	%56 = icmp eq i16 %55, 0
	br i1 %56, label %L.16, label %L.15
L.15:
	%57 = load i16* %j
	%58 = load i16* %n
	%59 = icmp ult i16 %57, %58
	br label %L.16
L.16:
	%60 = phi i1 [ true, %L.9 ], [ %59, %L.15 ]
	br i1 %60, label %L.13, label %L.14
L.13:
	%61 = load i16* %i
	%62 = load i16* %j
	%63 = icmp ule i16 %61, %62
	br label %L.14
L.14:
	%64 = phi i1 [ false, %L.16 ], [ %63, %L.13 ]
	br i1 %64, label %L.18, label %L.19
L.18:
	br label %L.20
L.20:
	%65 = load i16* %i
	%66 = load i16* %j
	%67 = icmp ule i16 %65, %66
	%68 = xor i1 %67, true
	br i1 %68, label %L.21, label %L.22
L.22:
	%69 = load %ast.AstNode** %tree
	%70 = load i16* %i
	%71 = load %ast.AstNode** %stree
	%72 = call %ast.AstNode* @ast_ChildIndexed(%ast.AstNode* %69, i16 %70, %ast.AstNode* %71)
	store %ast.AstNode* %72, %ast.AstNode** %tree
	%73 = load i16* %i
	%74 = add i16 %73, 1
	store i16 %74, i16* %i
	br label %L.20
L.21:
	%75 = load i16* %i
	%76 = load i16* %m
	%77 = icmp ugt i16 %75, %76
	br i1 %77, label %L.24, label %L.23
L.24:
	%78 = load i16* %i
	store i16 %78, i16* %m
	br label %L.23
L.23:
	br label %L.17
L.19:
	%79 = load i8* %once
	%80 = icmp ne i8 %79, 0
	%81 = xor i1 %80, true
	br i1 %81, label %L.26, label %L.25
L.26:
	store i8 1, i8* %once
	call void @lex_Error(i8 70)
	br label %L.25
L.25:
	br label %L.17
L.17:
	%82 = load i8* @lex_Token
	store i8 %82, i8* %tok
	%83 = load i8* %tok
	%84 = icmp eq i8 %83, 37
	br i1 %84, label %L.8, label %L.27
L.27:
	%85 = call i8 @lex_Expect(i8 5)
	store i8 %85, i8* %tok
	%86 = load i8* %tok
	%87 = icmp eq i8 %86, 37
	br i1 %87, label %L.8, label %L.28
L.28:
	br label %L.7
L.8:
	%88 = call i8 @lex_Expect(i8 37)
	store i8 %88, i8* %tok
	%89 = load %type.TypeNode** %t
	%90 = getelementptr %type.TypeNode* %89, i32 0, i32 25
	%91 = load i8* %90
	%92 = icmp ne i8 %91, 0
	br i1 %92, label %L.30, label %L.29
L.30:
	%93 = load %type.TypeNode** %t
	%94 = load i16* %m
	%95 = zext i16 %94 to i32
	%96 = call %type.TypeNode* @expr_ArrayFixFlex(%type.TypeNode* %93, i32 %95)
	store %type.TypeNode* %96, %type.TypeNode** %t
	br label %L.29
L.29:
	store i16 0, i16* %i
	br label %L.31
L.31:
	%97 = load i16* %i
	%98 = load i16* %m
	%99 = icmp ult i16 %97, %98
	%100 = xor i1 %99, true
	br i1 %100, label %L.32, label %L.33
L.33:
	%101 = load %ast.AstNode** %tree
	%102 = getelementptr %ast.AstNode* %101, i32 0, i32 11
	%103 = load i16* %i
	%104 = zext i16 %103 to i32
	%105 = getelementptr [0 x %ast.AstNode*]* %102, i32 0, i32 %104
	%106 = load %ast.AstNode** %105
	%107 = icmp eq %ast.AstNode* %106, null
	br i1 %107, label %L.35, label %L.34
L.35:
	%108 = load %type.TypeNode** %t
	%109 = getelementptr %type.TypeNode* %108, i32 0, i32 0
	%110 = load %type.TypeNode** %109
	%111 = bitcast %type.TypeNode* %110 to %type.TypeNode*
	%112 = call %ast.AstNode* @ast_Const(%type.TypeNode* %111, i64 0)
	%113 = bitcast %ast.AstNode* %112 to %ast.AstNode*
	%114 = load %ast.AstNode** %tree
	%115 = getelementptr %ast.AstNode* %114, i32 0, i32 11
	%116 = load i16* %i
	%117 = zext i16 %116 to i32
	%118 = getelementptr [0 x %ast.AstNode*]* %115, i32 0, i32 %117
	store %ast.AstNode* %113, %ast.AstNode** %118
	br label %L.34
L.34:
	%119 = load i16* %i
	%120 = add i16 %119, 1
	store i16 %120, i16* %i
	br label %L.31
L.32:
	br label %L.36
L.36:
	%121 = load i16* %i
	%122 = load i16* %n
	%123 = icmp ult i16 %121, %122
	%124 = xor i1 %123, true
	br i1 %124, label %L.37, label %L.38
L.38:
	%125 = load %ast.AstNode** %tree
	%126 = load i16* %i
	%127 = load %type.TypeNode** %t
	%128 = getelementptr %type.TypeNode* %127, i32 0, i32 0
	%129 = load %type.TypeNode** %128
	%130 = bitcast %type.TypeNode* %129 to %type.TypeNode*
	%131 = call %ast.AstNode* @ast_Const(%type.TypeNode* %130, i64 0)
	%132 = call %ast.AstNode* @ast_ChildIndexed(%ast.AstNode* %125, i16 %126, %ast.AstNode* %131)
	store %ast.AstNode* %132, %ast.AstNode** %tree
	%133 = load i16* %i
	%134 = add i16 %133, 1
	store i16 %134, i16* %i
	br label %L.36
L.37:
	%135 = load %type.TypeNode** %t
	%136 = load %ast.AstNode** %tree
	%137 = getelementptr %ast.AstNode* %136, i32 0, i32 8
	store %type.TypeNode* %135, %type.TypeNode** %137
	%138 = load %type.TypeNode** %t
	%139 = getelementptr %type.TypeNode* %138, i32 0, i32 21
	%140 = load i8* %139
	%141 = icmp ne i8 %140, 0
	br i1 %141, label %L.40, label %L.41
L.40:
	%142 = load %type.TypeNode** %t
	%143 = load %ast.AstNode** %tree
	%144 = call %ast.AstNode* @expr_ArrayPack(%type.TypeNode* %142, %ast.AstNode* %143)
	store %ast.AstNode* %144, %ast.AstNode** %tree
	br label %L.39
L.41:
	%145 = load %ast.AstNode** %tree
	%146 = call i8 @expr_IsAggregateConst(%ast.AstNode* %145)
	%147 = icmp ne i8 %146, 0
	%148 = xor i1 %147, true
	br i1 %148, label %L.43, label %L.42
L.43:
	call void @lex_Error(i8 71)
	br label %L.42
L.42:
	br label %L.39
L.39:
	br label %L.1
L.3:
	%149 = load i8* %tok
	%150 = icmp eq i8 %149, 40
	br i1 %150, label %L.45, label %L.46
L.45:
	%151 = call %ast.AstNode* @expr_String()
	store %ast.AstNode* %151, %ast.AstNode** %tree
	br label %L.44
L.46:
	%152 = load i8* %tok
	%153 = icmp eq i8 %152, 41
	br i1 %153, label %L.48, label %L.49
L.48:
	%154 = load %type.TypeNode** %t
	%155 = call %ast.AstNode* @expr_CompositeNamedConstant(%type.TypeNode* %154)
	store %ast.AstNode* %155, %ast.AstNode** %tree
	br label %L.47
L.49:
	call void @lex_ErrorT(i8 17, i8 36)
	br label %L.47
L.47:
	br label %L.44
L.44:
	br label %L.1
L.1:
	%156 = load %ast.AstNode** %tree
	store %ast.AstNode* %156, %ast.AstNode** %rv.0
	br label %return
return:
	%157 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %157
}
@S.575 = internal constant [27 x i8] c"No CLIST for packed record\00"
@S.576 = internal constant [33 x i8] c"Malformed LIST for packed record\00"
define internal %ast.AstNode* @expr_RecordPack(%type.TypeNode* %t$, %ast.AstNode* %intree$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	%intree = alloca %ast.AstNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	store %ast.AstNode* %intree$, %ast.AstNode** %intree
	%offs = alloca i32
	%tsize = alloca i32
	%fsize = alloca i32
	%f = alloca %symb.SymbNode*
	%i = alloca i16
	%tree = alloca %ast.AstNode*
	%vpart = alloca %ast.AstNode*
	%node = alloca %ast.AstNode*
	%cpart = alloca i64
	%mask = alloca i64
	%ft = alloca %type.TypeNode*
	store %ast.AstNode* null, %ast.AstNode** %vpart
	store i64 0, i64* %cpart
	%0 = load %ast.AstNode** %intree
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 0
	%2 = load i8* %1
	%3 = icmp ne i8 %2, 10
	br i1 %3, label %L.2, label %L.1
L.2:
	%4 = getelementptr [27 x i8]* @S.575
	%5 = bitcast [27 x i8]* %4 to [0 x i8]*
	call void @lex_ErrorS(i8 86, [0 x i8]* %5)
	%6 = load %ast.AstNode** %tree
	store %ast.AstNode* %6, %ast.AstNode** %rv.0
	br label %return
L.1:
	%7 = load %type.TypeNode** %t
	%8 = getelementptr %type.TypeNode* %7, i32 0, i32 10
	%9 = load i32* %8
	store i32 %9, i32* %tsize
	%10 = load %type.TypeNode** %t
	%11 = getelementptr %type.TypeNode* %10, i32 0, i32 4
	%12 = load %symb.SymbNode** %11
	%13 = bitcast %symb.SymbNode* %12 to %symb.SymbNode*
	store %symb.SymbNode* %13, %symb.SymbNode** %f
	%14 = load %type.TypeNode** %t
	%15 = getelementptr %type.TypeNode* %14, i32 0, i32 15
	%16 = load i8* %15
	%17 = icmp eq i8 %16, 1
	br i1 %17, label %L.4, label %L.5
L.4:
	%18 = load i32* %tsize
	store i32 %18, i32* %offs
	br label %L.3
L.5:
	store i32 0, i32* %offs
	br label %L.3
L.3:
	store i16 0, i16* %i
	br label %L.6
L.6:
	%19 = load %symb.SymbNode** %f
	%20 = icmp ne %symb.SymbNode* %19, null
	%21 = xor i1 %20, true
	br i1 %21, label %L.7, label %L.8
L.8:
	%22 = load %symb.SymbNode** %f
	%23 = getelementptr %symb.SymbNode* %22, i32 0, i32 1
	%24 = load %type.TypeNode** %23
	%25 = icmp ne %type.TypeNode* %24, null
	br i1 %25, label %L.10, label %L.9
L.10:
	%26 = load %symb.SymbNode** %f
	%27 = getelementptr %symb.SymbNode* %26, i32 0, i32 1
	%28 = load %type.TypeNode** %27
	store %type.TypeNode* %28, %type.TypeNode** %ft
	%29 = load %type.TypeNode** %ft
	%30 = getelementptr %type.TypeNode* %29, i32 0, i32 9
	%31 = load i32* %30
	store i32 %31, i32* %fsize
	%32 = load i32* %fsize
	%33 = zext i32 %32 to i64
	%34 = shl i64 1, %33
	%35 = sub i64 %34, 1
	store i64 %35, i64* %mask
	%36 = load %type.TypeNode** %t
	%37 = getelementptr %type.TypeNode* %36, i32 0, i32 15
	%38 = load i8* %37
	%39 = icmp eq i8 %38, 1
	br i1 %39, label %L.12, label %L.11
L.12:
	%40 = load i32* %offs
	%41 = load i32* %fsize
	%42 = sub i32 %40, %41
	store i32 %42, i32* %offs
	br label %L.11
L.11:
	%43 = load i16* %i
	%44 = load %ast.AstNode** %intree
	%45 = getelementptr %ast.AstNode* %44, i32 0, i32 2
	%46 = load i16* %45
	%47 = icmp uge i16 %43, %46
	br i1 %47, label %L.14, label %L.13
L.14:
	%48 = getelementptr [33 x i8]* @S.576
	%49 = bitcast [33 x i8]* %48 to [0 x i8]*
	call void @lex_ErrorS(i8 86, [0 x i8]* %49)
	store %ast.AstNode* null, %ast.AstNode** %rv.0
	br label %return
L.13:
	%50 = load %ast.AstNode** %intree
	%51 = getelementptr %ast.AstNode* %50, i32 0, i32 11
	%52 = load i16* %i
	%53 = zext i16 %52 to i32
	%54 = getelementptr [0 x %ast.AstNode*]* %51, i32 0, i32 %53
	%55 = load %ast.AstNode** %54
	%56 = bitcast %ast.AstNode* %55 to %ast.AstNode*
	store %ast.AstNode* %56, %ast.AstNode** %node
	%57 = load %ast.AstNode** %node
	%58 = getelementptr %ast.AstNode* %57, i32 0, i32 0
	%59 = load i8* %58
	%60 = icmp eq i8 %59, 7
	br i1 %60, label %L.16, label %L.17
L.16:
	%61 = load %ast.AstNode** %node
	%62 = load i32* %fsize
	call void @ast_CheckConstTruncate(%ast.AstNode* %61, i32 %62)
	%63 = load i64* %cpart
	%64 = load %ast.AstNode** %node
	%65 = getelementptr %ast.AstNode* %64, i32 0, i32 10
	%66 = load i64* %65
	%67 = load i64* %mask
	%68 = and i64 %66, %67
	%69 = load i32* %offs
	%70 = zext i32 %69 to i64
	%71 = shl i64 %68, %70
	%72 = or i64 %63, %71
	store i64 %72, i64* %cpart
	br label %L.15
L.17:
	%73 = load %ast.AstNode** %node
	%74 = load i32* %tsize
	%75 = call %ast.AstNode* @ast_Extend(%ast.AstNode* %73, i32 %74, i8 0)
	store %ast.AstNode* %75, %ast.AstNode** %node
	%76 = load %type.TypeNode** %ft
	%77 = load %ast.AstNode** %node
	%78 = load %type.TypeNode** @type_wordtype
	%79 = load i32* %offs
	%80 = zext i32 %79 to i64
	%81 = call %ast.AstNode* @ast_Const(%type.TypeNode* %78, i64 %80)
	%82 = call %ast.AstNode* @ast_New2(i8 68, %type.TypeNode* %76, %ast.AstNode* %77, %ast.AstNode* %81)
	store %ast.AstNode* %82, %ast.AstNode** %node
	%83 = load %ast.AstNode** %vpart
	%84 = icmp eq %ast.AstNode* %83, null
	br i1 %84, label %L.19, label %L.20
L.19:
	%85 = load %ast.AstNode** %node
	store %ast.AstNode* %85, %ast.AstNode** %vpart
	br label %L.18
L.20:
	%86 = load %type.TypeNode** %ft
	%87 = load %ast.AstNode** %vpart
	%88 = load %ast.AstNode** %node
	%89 = call %ast.AstNode* @ast_New2(i8 73, %type.TypeNode* %86, %ast.AstNode* %87, %ast.AstNode* %88)
	store %ast.AstNode* %89, %ast.AstNode** %vpart
	br label %L.18
L.18:
	br label %L.15
L.15:
	%90 = load %type.TypeNode** %t
	%91 = getelementptr %type.TypeNode* %90, i32 0, i32 15
	%92 = load i8* %91
	%93 = icmp ne i8 %92, 1
	br i1 %93, label %L.22, label %L.21
L.22:
	%94 = load i32* %offs
	%95 = load i32* %fsize
	%96 = add i32 %94, %95
	store i32 %96, i32* %offs
	br label %L.21
L.21:
	br label %L.9
L.9:
	%97 = load %symb.SymbNode** %f
	%98 = getelementptr %symb.SymbNode* %97, i32 0, i32 0
	%99 = load %symb.SymbNode** %98
	%100 = bitcast %symb.SymbNode* %99 to %symb.SymbNode*
	store %symb.SymbNode* %100, %symb.SymbNode** %f
	%101 = load i16* %i
	%102 = add i16 %101, 1
	store i16 %102, i16* %i
	br label %L.6
L.7:
	%103 = load %type.TypeNode** @type_wordtype
	%104 = load i64* %cpart
	%105 = call %ast.AstNode* @ast_Const(%type.TypeNode* %103, i64 %104)
	%106 = load i32* %tsize
	%107 = call %ast.AstNode* @ast_Extend(%ast.AstNode* %105, i32 %106, i8 0)
	store %ast.AstNode* %107, %ast.AstNode** %tree
	%108 = load %ast.AstNode** %vpart
	%109 = icmp ne %ast.AstNode* %108, null
	br i1 %109, label %L.24, label %L.23
L.24:
	%110 = load %type.TypeNode** @type_wordtype
	%111 = load %ast.AstNode** %tree
	%112 = load %ast.AstNode** %vpart
	%113 = call %ast.AstNode* @ast_New2(i8 73, %type.TypeNode* %110, %ast.AstNode* %111, %ast.AstNode* %112)
	store %ast.AstNode* %113, %ast.AstNode** %tree
	br label %L.23
L.23:
	%114 = load %type.TypeNode** %t
	%115 = load %ast.AstNode** %tree
	%116 = getelementptr %ast.AstNode* %115, i32 0, i32 8
	store %type.TypeNode* %114, %type.TypeNode** %116
	%117 = load %ast.AstNode** %tree
	store %ast.AstNode* %117, %ast.AstNode** %rv.0
	br label %return
return:
	%118 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %118
}
define internal %type.TypeNode* @expr_RecordFixFlex(%type.TypeNode* %bt$, %ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca %type.TypeNode*
	%bt = alloca %type.TypeNode*
	%node = alloca %ast.AstNode*
	store %type.TypeNode* %bt$, %type.TypeNode** %bt
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%t = alloca %type.TypeNode*
	%s = alloca %symb.SymbNode*
	%ps = alloca %symb.SymbNode*
	%bs = alloca %symb.SymbNode*
	%0 = load %type.TypeNode** %bt
	%1 = call %type.TypeNode* @type_Clone(%type.TypeNode* %0)
	store %type.TypeNode* %1, %type.TypeNode** %t
	store %symb.SymbNode* null, %symb.SymbNode** %ps
	%2 = load %type.TypeNode** %bt
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 4
	%4 = load %symb.SymbNode** %3
	%5 = bitcast %symb.SymbNode* %4 to %symb.SymbNode*
	store %symb.SymbNode* %5, %symb.SymbNode** %bs
	br label %L.1
L.1:
	%6 = load %symb.SymbNode** %bs
	%7 = icmp ne %symb.SymbNode* %6, null
	%8 = xor i1 %7, true
	br i1 %8, label %L.2, label %L.3
L.3:
	%9 = load %symb.SymbNode** %bs
	%10 = getelementptr %symb.SymbNode* %9, i32 0, i32 22
	%11 = getelementptr [0 x i8]* %10
	%12 = bitcast [0 x i8]* %11 to [0 x i8]*
	%13 = call %symb.SymbNode* @symb_New(i8 4, [0 x i8]* %12, i8 2)
	store %symb.SymbNode* %13, %symb.SymbNode** %s
	%14 = load %symb.SymbNode** %ps
	%15 = icmp ne %symb.SymbNode* %14, null
	br i1 %15, label %L.5, label %L.6
L.5:
	%16 = load %symb.SymbNode** %s
	%17 = bitcast %symb.SymbNode* %16 to %symb.SymbNode*
	%18 = load %symb.SymbNode** %ps
	%19 = getelementptr %symb.SymbNode* %18, i32 0, i32 0
	store %symb.SymbNode* %17, %symb.SymbNode** %19
	br label %L.4
L.6:
	%20 = load %symb.SymbNode** %s
	%21 = bitcast %symb.SymbNode* %20 to %symb.SymbNode*
	%22 = load %type.TypeNode** %t
	%23 = getelementptr %type.TypeNode* %22, i32 0, i32 4
	store %symb.SymbNode* %21, %symb.SymbNode** %23
	br label %L.4
L.4:
	%24 = load %symb.SymbNode** %s
	store %symb.SymbNode* %24, %symb.SymbNode** %ps
	%25 = load %symb.SymbNode** %bs
	%26 = getelementptr %symb.SymbNode* %25, i32 0, i32 1
	%27 = load %type.TypeNode** %26
	%28 = load %symb.SymbNode** %s
	%29 = getelementptr %symb.SymbNode* %28, i32 0, i32 1
	store %type.TypeNode* %27, %type.TypeNode** %29
	%30 = load %symb.SymbNode** %bs
	%31 = getelementptr %symb.SymbNode* %30, i32 0, i32 0
	%32 = load %symb.SymbNode** %31
	%33 = bitcast %symb.SymbNode* %32 to %symb.SymbNode*
	store %symb.SymbNode* %33, %symb.SymbNode** %bs
	br label %L.1
L.2:
	%34 = load %ast.AstNode** %node
	%35 = getelementptr %ast.AstNode* %34, i32 0, i32 11
	%36 = load %ast.AstNode** %node
	%37 = getelementptr %ast.AstNode* %36, i32 0, i32 2
	%38 = load i16* %37
	%39 = sub i16 %38, 1
	%40 = zext i16 %39 to i32
	%41 = getelementptr [0 x %ast.AstNode*]* %35, i32 0, i32 %40
	%42 = load %ast.AstNode** %41
	%43 = getelementptr %ast.AstNode* %42, i32 0, i32 8
	%44 = load %type.TypeNode** %43
	%45 = load %symb.SymbNode** %ps
	%46 = getelementptr %symb.SymbNode* %45, i32 0, i32 1
	store %type.TypeNode* %44, %type.TypeNode** %46
	%47 = load %type.TypeNode** %bt
	%48 = bitcast %type.TypeNode* %47 to %type.TypeNode*
	%49 = load %type.TypeNode** %t
	%50 = getelementptr %type.TypeNode* %49, i32 0, i32 0
	store %type.TypeNode* %48, %type.TypeNode** %50
	%51 = load %type.TypeNode** %t
	%52 = getelementptr %type.TypeNode* %51, i32 0, i32 9
	store i32 0, i32* %52
	%53 = load %type.TypeNode** %t
	%54 = getelementptr %type.TypeNode* %53, i32 0, i32 10
	store i32 0, i32* %54
	%55 = load %type.TypeNode** %t
	%56 = getelementptr %type.TypeNode* %55, i32 0, i32 30
	store i8 0, i8* %56
	%57 = load %type.TypeNode** %t
	call void @type_Final(%type.TypeNode* %57)
	%58 = load %type.TypeNode** %t
	store %type.TypeNode* %58, %type.TypeNode** %rv.0
	br label %return
return:
	%59 = load %type.TypeNode** %rv.0
	ret %type.TypeNode* %59
}
define internal %ast.AstNode* @expr_RecordConst(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tree = alloca %ast.AstNode*
	%stree = alloca %ast.AstNode*
	%fs = alloca %symb.SymbNode*
	%ds = alloca %symb.SymbNode*
	%ft = alloca %type.TypeNode*
	%max = alloca i16
	%tok = alloca i8
	%once = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 36
	br i1 %2, label %L.2, label %L.3
L.2:
	%3 = load %type.TypeNode** %t
	%4 = call %ast.AstNode* @ast_New(i8 10, %type.TypeNode* %3)
	store %ast.AstNode* %4, %ast.AstNode** %tree
	%5 = load i64* @expr_strid
	%6 = add i64 %5, 1
	store i64 %6, i64* @expr_strid
	%7 = load i64* @expr_strid
	%8 = load %ast.AstNode** %tree
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 10
	store i64 %7, i64* %9
	store i8 0, i8* %once
	store i16 0, i16* %max
	%10 = load %type.TypeNode** %t
	%11 = getelementptr %type.TypeNode* %10, i32 0, i32 4
	%12 = load %symb.SymbNode** %11
	%13 = bitcast %symb.SymbNode* %12 to %symb.SymbNode*
	store %symb.SymbNode* %13, %symb.SymbNode** %fs
	br label %L.4
L.4:
	%14 = call i8 @lex_Next()
	store i8 %14, i8* %tok
	%15 = load i8* %tok
	%16 = icmp eq i8 %15, 2
	br i1 %16, label %L.7, label %L.8
L.7:
	%17 = call i8 @lex_Next()
	store i8 %17, i8* %tok
	%18 = load i8* %tok
	%19 = icmp eq i8 %18, 41
	br i1 %19, label %L.10, label %L.11
L.10:
	%20 = load %type.TypeNode** %t
	%21 = getelementptr %type.TypeNode* %20, i32 0, i32 4
	%22 = load %symb.SymbNode** %21
	%23 = bitcast %symb.SymbNode* %22 to %symb.SymbNode*
	%24 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%25 = call %symb.SymbNode* @symb_FindLocal(%symb.SymbNode* %23, [0 x i8]* %24)
	store %symb.SymbNode* %25, %symb.SymbNode** %ds
	%26 = load %symb.SymbNode** %ds
	%27 = icmp ne %symb.SymbNode* %26, null
	br i1 %27, label %L.13, label %L.14
L.13:
	%28 = load %symb.SymbNode** %ds
	store %symb.SymbNode* %28, %symb.SymbNode** %fs
	br label %L.12
L.14:
	%29 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 19, [0 x i8]* %29)
	br label %L.12
L.12:
	%30 = call i8 @lex_Next()
	store i8 %30, i8* %tok
	br label %L.9
L.11:
	call void @lex_Error(i8 18)
	br label %L.9
L.9:
	%31 = call i8 @lex_Expect(i8 9)
	store i8 %31, i8* %tok
	br label %L.6
L.8:
	br label %L.15
L.15:
	%32 = load %symb.SymbNode** %fs
	%33 = icmp ne %symb.SymbNode* %32, null
	br i1 %33, label %L.18, label %L.19
L.18:
	%34 = load %symb.SymbNode** %fs
	%35 = getelementptr %symb.SymbNode* %34, i32 0, i32 18
	%36 = load i8* %35
	%37 = icmp ne i8 %36, 0
	br label %L.19
L.19:
	%38 = phi i1 [ false, %L.15 ], [ %37, %L.18 ]
	%39 = xor i1 %38, true
	br i1 %39, label %L.16, label %L.17
L.17:
	%40 = load %symb.SymbNode** %fs
	%41 = getelementptr %symb.SymbNode* %40, i32 0, i32 0
	%42 = load %symb.SymbNode** %41
	%43 = bitcast %symb.SymbNode* %42 to %symb.SymbNode*
	store %symb.SymbNode* %43, %symb.SymbNode** %fs
	br label %L.15
L.16:
	br label %L.6
L.6:
	store %type.TypeNode* null, %type.TypeNode** %ft
	%44 = load %symb.SymbNode** %fs
	%45 = icmp ne %symb.SymbNode* %44, null
	br i1 %45, label %L.21, label %L.20
L.21:
	%46 = load %symb.SymbNode** %fs
	%47 = getelementptr %symb.SymbNode* %46, i32 0, i32 1
	%48 = load %type.TypeNode** %47
	store %type.TypeNode* %48, %type.TypeNode** %ft
	br label %L.20
L.20:
	%49 = load %type.TypeNode** %ft
	%50 = call %ast.AstNode* @expr_Const(%type.TypeNode* %49)
	store %ast.AstNode* %50, %ast.AstNode** %stree
	%51 = load %symb.SymbNode** %fs
	%52 = icmp ne %symb.SymbNode* %51, null
	br i1 %52, label %L.23, label %L.24
L.23:
	%53 = load %ast.AstNode** %tree
	%54 = load %symb.SymbNode** %fs
	%55 = getelementptr %symb.SymbNode* %54, i32 0, i32 10
	%56 = load i16* %55
	%57 = load %ast.AstNode** %stree
	%58 = call %ast.AstNode* @ast_ChildIndexed(%ast.AstNode* %53, i16 %56, %ast.AstNode* %57)
	store %ast.AstNode* %58, %ast.AstNode** %tree
	%59 = load %symb.SymbNode** %fs
	%60 = getelementptr %symb.SymbNode* %59, i32 0, i32 10
	%61 = load i16* %60
	%62 = load i16* %max
	%63 = icmp ugt i16 %61, %62
	br i1 %63, label %L.26, label %L.25
L.26:
	%64 = load %symb.SymbNode** %fs
	%65 = getelementptr %symb.SymbNode* %64, i32 0, i32 10
	%66 = load i16* %65
	store i16 %66, i16* %max
	br label %L.25
L.25:
	%67 = load %symb.SymbNode** %fs
	%68 = getelementptr %symb.SymbNode* %67, i32 0, i32 0
	%69 = load %symb.SymbNode** %68
	%70 = bitcast %symb.SymbNode* %69 to %symb.SymbNode*
	store %symb.SymbNode* %70, %symb.SymbNode** %fs
	br label %L.22
L.24:
	%71 = load i8* %once
	%72 = icmp ne i8 %71, 0
	%73 = xor i1 %72, true
	br i1 %73, label %L.28, label %L.27
L.28:
	store i8 1, i8* %once
	call void @lex_Error(i8 70)
	br label %L.27
L.27:
	br label %L.22
L.22:
	%74 = load i8* @lex_Token
	store i8 %74, i8* %tok
	%75 = load i8* %tok
	%76 = icmp ne i8 %75, 5
	br i1 %76, label %L.5, label %L.29
L.29:
	br label %L.4
L.5:
	%77 = call i8 @lex_Expect(i8 37)
	store i8 %77, i8* %tok
	%78 = load %type.TypeNode** %t
	%79 = getelementptr %type.TypeNode* %78, i32 0, i32 4
	%80 = load %symb.SymbNode** %79
	%81 = bitcast %symb.SymbNode* %80 to %symb.SymbNode*
	store %symb.SymbNode* %81, %symb.SymbNode** %fs
	br label %L.30
L.30:
	%82 = load %symb.SymbNode** %fs
	%83 = icmp ne %symb.SymbNode* %82, null
	br i1 %83, label %L.33, label %L.34
L.33:
	%84 = load %symb.SymbNode** %fs
	%85 = getelementptr %symb.SymbNode* %84, i32 0, i32 10
	%86 = load i16* %85
	%87 = load i16* %max
	%88 = icmp ule i16 %86, %87
	br label %L.34
L.34:
	%89 = phi i1 [ false, %L.30 ], [ %88, %L.33 ]
	%90 = xor i1 %89, true
	br i1 %90, label %L.31, label %L.32
L.32:
	%91 = load %ast.AstNode** %tree
	%92 = getelementptr %ast.AstNode* %91, i32 0, i32 11
	%93 = load %symb.SymbNode** %fs
	%94 = getelementptr %symb.SymbNode* %93, i32 0, i32 10
	%95 = load i16* %94
	%96 = zext i16 %95 to i32
	%97 = getelementptr [0 x %ast.AstNode*]* %92, i32 0, i32 %96
	%98 = load %ast.AstNode** %97
	%99 = icmp eq %ast.AstNode* %98, null
	br i1 %99, label %L.36, label %L.35
L.36:
	%100 = load %symb.SymbNode** %fs
	%101 = getelementptr %symb.SymbNode* %100, i32 0, i32 1
	%102 = load %type.TypeNode** %101
	%103 = call %ast.AstNode* @ast_Const(%type.TypeNode* %102, i64 0)
	%104 = bitcast %ast.AstNode* %103 to %ast.AstNode*
	%105 = load %ast.AstNode** %tree
	%106 = getelementptr %ast.AstNode* %105, i32 0, i32 11
	%107 = load %symb.SymbNode** %fs
	%108 = getelementptr %symb.SymbNode* %107, i32 0, i32 10
	%109 = load i16* %108
	%110 = zext i16 %109 to i32
	%111 = getelementptr [0 x %ast.AstNode*]* %106, i32 0, i32 %110
	store %ast.AstNode* %104, %ast.AstNode** %111
	br label %L.35
L.35:
	%112 = load %symb.SymbNode** %fs
	%113 = getelementptr %symb.SymbNode* %112, i32 0, i32 0
	%114 = load %symb.SymbNode** %113
	%115 = bitcast %symb.SymbNode* %114 to %symb.SymbNode*
	store %symb.SymbNode* %115, %symb.SymbNode** %fs
	br label %L.30
L.31:
	br label %L.37
L.37:
	%116 = load %symb.SymbNode** %fs
	%117 = icmp ne %symb.SymbNode* %116, null
	%118 = xor i1 %117, true
	br i1 %118, label %L.38, label %L.39
L.39:
	%119 = load %ast.AstNode** %tree
	%120 = load %symb.SymbNode** %fs
	%121 = getelementptr %symb.SymbNode* %120, i32 0, i32 10
	%122 = load i16* %121
	%123 = load %symb.SymbNode** %fs
	%124 = getelementptr %symb.SymbNode* %123, i32 0, i32 1
	%125 = load %type.TypeNode** %124
	%126 = call %ast.AstNode* @ast_Const(%type.TypeNode* %125, i64 0)
	%127 = call %ast.AstNode* @ast_ChildIndexed(%ast.AstNode* %119, i16 %122, %ast.AstNode* %126)
	store %ast.AstNode* %127, %ast.AstNode** %tree
	%128 = load %symb.SymbNode** %fs
	%129 = getelementptr %symb.SymbNode* %128, i32 0, i32 0
	%130 = load %symb.SymbNode** %129
	%131 = bitcast %symb.SymbNode* %130 to %symb.SymbNode*
	store %symb.SymbNode* %131, %symb.SymbNode** %fs
	br label %L.37
L.38:
	%132 = load %type.TypeNode** %t
	%133 = getelementptr %type.TypeNode* %132, i32 0, i32 25
	%134 = load i8* %133
	%135 = icmp ne i8 %134, 0
	br i1 %135, label %L.41, label %L.40
L.41:
	%136 = load %type.TypeNode** %t
	%137 = load %ast.AstNode** %tree
	%138 = call %type.TypeNode* @expr_RecordFixFlex(%type.TypeNode* %136, %ast.AstNode* %137)
	%139 = load %ast.AstNode** %tree
	%140 = getelementptr %ast.AstNode* %139, i32 0, i32 8
	store %type.TypeNode* %138, %type.TypeNode** %140
	br label %L.40
L.40:
	%141 = load %type.TypeNode** %t
	%142 = getelementptr %type.TypeNode* %141, i32 0, i32 21
	%143 = load i8* %142
	%144 = icmp ne i8 %143, 0
	br i1 %144, label %L.43, label %L.44
L.43:
	%145 = load %type.TypeNode** %t
	%146 = load %ast.AstNode** %tree
	%147 = call %ast.AstNode* @expr_RecordPack(%type.TypeNode* %145, %ast.AstNode* %146)
	store %ast.AstNode* %147, %ast.AstNode** %tree
	br label %L.42
L.44:
	%148 = load %ast.AstNode** %tree
	%149 = call i8 @expr_IsAggregateConst(%ast.AstNode* %148)
	%150 = icmp ne i8 %149, 0
	%151 = xor i1 %150, true
	br i1 %151, label %L.46, label %L.45
L.46:
	call void @lex_Error(i8 71)
	br label %L.45
L.45:
	br label %L.42
L.42:
	br label %L.1
L.3:
	%152 = load i8* %tok
	%153 = icmp eq i8 %152, 41
	br i1 %153, label %L.48, label %L.49
L.48:
	%154 = load %type.TypeNode** %t
	%155 = call %ast.AstNode* @expr_CompositeNamedConstant(%type.TypeNode* %154)
	store %ast.AstNode* %155, %ast.AstNode** %tree
	br label %L.47
L.49:
	call void @lex_ErrorT(i8 17, i8 36)
	br label %L.47
L.47:
	br label %L.1
L.1:
	%156 = load %ast.AstNode** %tree
	store %ast.AstNode* %156, %ast.AstNode** %rv.0
	br label %return
return:
	%157 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %157
}
define internal %ast.AstNode* @expr_CompositeValue(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load %type.TypeNode** %t
	%1 = icmp ne %type.TypeNode* %0, null
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load %type.TypeNode** %t
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 14
	%4 = load i8* %3
	%5 = zext i8 %4 to i32
	switch i32 %5, label %L.4 [
		i32 7, label %L.6
		i32 6, label %L.7
		i32 5, label %L.8
	]
L.6:
	%6 = load %type.TypeNode** %t
	%7 = call %ast.AstNode* @expr_RecordConst(%type.TypeNode* %6)
	store %ast.AstNode* %7, %ast.AstNode** %tree
	br label %L.5
L.7:
	%8 = load %type.TypeNode** %t
	%9 = call %ast.AstNode* @expr_ArrayConst(%type.TypeNode* %8)
	store %ast.AstNode* %9, %ast.AstNode** %tree
	br label %L.5
L.8:
	%10 = load %type.TypeNode** %t
	%11 = getelementptr %type.TypeNode* %10, i32 0, i32 0
	%12 = load %type.TypeNode** %11
	%13 = bitcast %type.TypeNode* %12 to %type.TypeNode*
	%14 = call %ast.AstNode* @expr_CompositeValue(%type.TypeNode* %13)
	store %ast.AstNode* %14, %ast.AstNode** %tree
	br label %L.5
L.4:
	call void @lex_Error(i8 52)
	br label %L.5
L.5:
	br label %L.1
L.3:
	call void @lex_Error(i8 51)
	br label %L.1
L.1:
	%15 = load %ast.AstNode** %tree
	store %ast.AstNode* %15, %ast.AstNode** %rv.0
	br label %return
return:
	%16 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %16
}
define internal i32 @expr_CalcAlign(i32 %base$, i32 %offset$) nounwind {
L.0:
	%rv.0 = alloca i32
	%base = alloca i32
	%offset = alloca i32
	store i32 %base$, i32* %base
	store i32 %offset$, i32* %offset
	%new = alloca i32
	%tz = alloca i32
	%0 = load i32* %offset
	%1 = icmp eq i32 %0, 0
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load i32* %base
	store i32 %2, i32* %new
	br label %L.1
L.3:
	store i32 0, i32* %tz
	br label %L.4
L.4:
	%3 = load i32* %offset
	%4 = and i32 %3, 1
	%5 = icmp eq i32 %4, 0
	%6 = xor i1 %5, true
	br i1 %6, label %L.5, label %L.6
L.6:
	%7 = load i32* %offset
	%8 = lshr i32 %7, 1
	store i32 %8, i32* %offset
	%9 = load i32* %tz
	%10 = add i32 %9, 1
	store i32 %10, i32* %tz
	br label %L.4
L.5:
	%11 = load i32* %tz
	%12 = shl i32 1, %11
	store i32 %12, i32* %new
	%13 = load i32* %base
	%14 = load i32* %new
	%15 = icmp ult i32 %13, %14
	%16 = select i1 %15, i32 %13, i32 %14
	store i32 %16, i32* %new
	br label %L.1
L.1:
	%17 = load i32* %new
	store i32 %17, i32* %rv.0
	br label %return
return:
	%18 = load i32* %rv.0
	ret i32 %18
}
define internal i32 @expr_FieldAlign(i32 %base$, %type.TypeNode* %record$, i32 %fieldno$) nounwind {
L.0:
	%rv.0 = alloca i32
	%base = alloca i32
	%record = alloca %type.TypeNode*
	%fieldno = alloca i32
	store i32 %base$, i32* %base
	store %type.TypeNode* %record$, %type.TypeNode** %record
	store i32 %fieldno$, i32* %fieldno
	%offs = alloca i32
	%i = alloca i32
	%s = alloca %symb.SymbNode*
	%0 = load %type.TypeNode** %record
	%1 = getelementptr %type.TypeNode* %0, i32 0, i32 14
	%2 = load i8* %1
	%3 = icmp ne i8 %2, 7
	br i1 %3, label %L.2, label %L.1
L.2:
	store i32 0, i32* %rv.0
	br label %return
L.1:
	store i32 0, i32* %offs
	store i32 0, i32* %i
	%4 = load %type.TypeNode** %record
	%5 = getelementptr %type.TypeNode* %4, i32 0, i32 4
	%6 = load %symb.SymbNode** %5
	%7 = bitcast %symb.SymbNode* %6 to %symb.SymbNode*
	store %symb.SymbNode* %7, %symb.SymbNode** %s
	br label %L.3
L.3:
	%8 = load i32* %i
	%9 = load i32* %fieldno
	%10 = icmp ult i32 %8, %9
	br i1 %10, label %L.6, label %L.7
L.6:
	%11 = load %symb.SymbNode** %s
	%12 = icmp ne %symb.SymbNode* %11, null
	br label %L.7
L.7:
	%13 = phi i1 [ false, %L.3 ], [ %12, %L.6 ]
	%14 = xor i1 %13, true
	br i1 %14, label %L.4, label %L.5
L.5:
	%15 = load %type.TypeNode** %record
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 21
	%17 = load i8* %16
	%18 = icmp ne i8 %17, 0
	br i1 %18, label %L.9, label %L.10
L.9:
	%19 = load i32* %offs
	%20 = load %symb.SymbNode** %s
	%21 = getelementptr %symb.SymbNode* %20, i32 0, i32 1
	%22 = load %type.TypeNode** %21
	%23 = getelementptr %type.TypeNode* %22, i32 0, i32 9
	%24 = load i32* %23
	%25 = add i32 %19, %24
	store i32 %25, i32* %offs
	br label %L.8
L.10:
	%26 = load i32* %offs
	%27 = load %symb.SymbNode** %s
	%28 = getelementptr %symb.SymbNode* %27, i32 0, i32 1
	%29 = load %type.TypeNode** %28
	%30 = getelementptr %type.TypeNode* %29, i32 0, i32 10
	%31 = load i32* %30
	%32 = load %target.ModelT** @target_Target
	%33 = getelementptr %target.ModelT* %32, i32 0, i32 2
	%34 = load i8* %33
	%35 = zext i8 %34 to i32
	%36 = udiv i32 %31, %35
	%37 = add i32 %26, %36
	store i32 %37, i32* %offs
	br label %L.8
L.8:
	%38 = load i32* %i
	%39 = add i32 %38, 1
	store i32 %39, i32* %i
	%40 = load %symb.SymbNode** %s
	%41 = getelementptr %symb.SymbNode* %40, i32 0, i32 0
	%42 = load %symb.SymbNode** %41
	%43 = bitcast %symb.SymbNode* %42 to %symb.SymbNode*
	store %symb.SymbNode* %43, %symb.SymbNode** %s
	br label %L.3
L.4:
	%44 = load i32* %base
	%45 = load i32* %offs
	%46 = call i32 @expr_CalcAlign(i32 %44, i32 %45)
	store i32 %46, i32* %rv.0
	br label %return
return:
	%47 = load i32* %rv.0
	ret i32 %47
}
@S.577 = internal constant [30 x i8] c"GetAlignment: unexpected node\00"
define internal i32 @expr_GetAlignment(%ast.AstNode* %tree$) nounwind {
L.0:
	%rv.0 = alloca i32
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	%alignment = alloca i32
	%0 = load %ast.AstNode** %tree
	%1 = icmp eq %ast.AstNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	store i32 0, i32* %rv.0
	br label %return
L.1:
	%2 = load %ast.AstNode** %tree
	%3 = getelementptr %ast.AstNode* %2, i32 0, i32 0
	%4 = load i8* %3
	%5 = zext i8 %4 to i32
	switch i32 %5, label %L.3 [
		i32 12, label %L.5
		i32 27, label %L.6
		i32 32, label %L.7
		i32 16, label %L.7
		i32 13, label %L.8
		i32 14, label %L.9
		i32 15, label %L.9
		i32 10, label %L.10
		i32 9, label %L.10
	]
L.5:
	%6 = load %ast.AstNode** %tree
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 8
	%8 = load %type.TypeNode** %7
	%9 = icmp ne %type.TypeNode* %8, null
	br i1 %9, label %L.12, label %L.13
L.12:
	%10 = load %ast.AstNode** %tree
	%11 = getelementptr %ast.AstNode* %10, i32 0, i32 8
	%12 = load %type.TypeNode** %11
	%13 = getelementptr %type.TypeNode* %12, i32 0, i32 0
	%14 = load %type.TypeNode** %13
	%15 = getelementptr %type.TypeNode* %14, i32 0, i32 11
	%16 = load i32* %15
	%17 = load %target.ModelT** @target_Target
	%18 = getelementptr %target.ModelT* %17, i32 0, i32 2
	%19 = load i8* %18
	%20 = zext i8 %19 to i32
	%21 = udiv i32 %16, %20
	store i32 %21, i32* %alignment
	br label %L.11
L.13:
	store i32 0, i32* %alignment
	br label %L.11
L.11:
	br label %L.4
L.6:
	%22 = load %ast.AstNode** %tree
	%23 = getelementptr %ast.AstNode* %22, i32 0, i32 8
	%24 = load %type.TypeNode** %23
	%25 = getelementptr %type.TypeNode* %24, i32 0, i32 14
	%26 = load i8* %25
	%27 = icmp eq i8 %26, 5
	br i1 %27, label %L.14, label %L.15
L.14:
	%28 = load %ast.AstNode** %tree
	%29 = getelementptr %ast.AstNode* %28, i32 0, i32 8
	%30 = load %type.TypeNode** %29
	%31 = icmp ne %type.TypeNode* %30, null
	br label %L.15
L.15:
	%32 = phi i1 [ false, %L.6 ], [ %31, %L.14 ]
	br i1 %32, label %L.17, label %L.18
L.17:
	%33 = load %ast.AstNode** %tree
	%34 = getelementptr %ast.AstNode* %33, i32 0, i32 8
	%35 = load %type.TypeNode** %34
	%36 = getelementptr %type.TypeNode* %35, i32 0, i32 0
	%37 = load %type.TypeNode** %36
	%38 = getelementptr %type.TypeNode* %37, i32 0, i32 11
	%39 = load i32* %38
	%40 = load %target.ModelT** @target_Target
	%41 = getelementptr %target.ModelT* %40, i32 0, i32 2
	%42 = load i8* %41
	%43 = zext i8 %42 to i32
	%44 = udiv i32 %39, %43
	store i32 %44, i32* %alignment
	br label %L.16
L.18:
	store i32 0, i32* %alignment
	br label %L.16
L.16:
	br label %L.4
L.7:
	%45 = load %ast.AstNode** %tree
	%46 = getelementptr %ast.AstNode* %45, i32 0, i32 11
	%47 = getelementptr [0 x %ast.AstNode*]* %46, i32 0, i32 0
	%48 = load %ast.AstNode** %47
	%49 = bitcast %ast.AstNode* %48 to %ast.AstNode*
	%50 = call i32 @expr_GetAlignment(%ast.AstNode* %49)
	store i32 %50, i32* %alignment
	br label %L.4
L.8:
	%51 = load %ast.AstNode** %tree
	%52 = getelementptr %ast.AstNode* %51, i32 0, i32 11
	%53 = getelementptr [0 x %ast.AstNode*]* %52, i32 0, i32 0
	%54 = load %ast.AstNode** %53
	%55 = bitcast %ast.AstNode* %54 to %ast.AstNode*
	%56 = call i32 @expr_GetAlignment(%ast.AstNode* %55)
	store i32 %56, i32* %alignment
	%57 = load i32* %alignment
	%58 = icmp ne i32 %57, 0
	br i1 %58, label %L.20, label %L.19
L.20:
	%59 = load i32* %alignment
	%60 = load %ast.AstNode** %tree
	%61 = getelementptr %ast.AstNode* %60, i32 0, i32 11
	%62 = getelementptr [0 x %ast.AstNode*]* %61, i32 0, i32 0
	%63 = load %ast.AstNode** %62
	%64 = getelementptr %ast.AstNode* %63, i32 0, i32 8
	%65 = load %type.TypeNode** %64
	%66 = getelementptr %type.TypeNode* %65, i32 0, i32 0
	%67 = load %type.TypeNode** %66
	%68 = bitcast %type.TypeNode* %67 to %type.TypeNode*
	%69 = load %ast.AstNode** %tree
	%70 = getelementptr %ast.AstNode* %69, i32 0, i32 10
	%71 = load i64* %70
	%72 = trunc i64 %71 to i32
	%73 = call i32 @expr_FieldAlign(i32 %59, %type.TypeNode* %68, i32 %72)
	store i32 %73, i32* %alignment
	br label %L.19
L.19:
	br label %L.4
L.9:
	%74 = load %ast.AstNode** %tree
	%75 = getelementptr %ast.AstNode* %74, i32 0, i32 11
	%76 = getelementptr [0 x %ast.AstNode*]* %75, i32 0, i32 0
	%77 = load %ast.AstNode** %76
	%78 = bitcast %ast.AstNode* %77 to %ast.AstNode*
	%79 = call i32 @expr_GetAlignment(%ast.AstNode* %78)
	store i32 %79, i32* %alignment
	%80 = load i32* %alignment
	%81 = icmp ne i32 %80, 0
	br i1 %81, label %L.22, label %L.21
L.22:
	%82 = load %ast.AstNode** %tree
	%83 = getelementptr %ast.AstNode* %82, i32 0, i32 11
	%84 = getelementptr [0 x %ast.AstNode*]* %83, i32 0, i32 1
	%85 = load %ast.AstNode** %84
	%86 = getelementptr %ast.AstNode* %85, i32 0, i32 0
	%87 = load i8* %86
	%88 = icmp eq i8 %87, 7
	br i1 %88, label %L.24, label %L.25
L.24:
	%size = alloca i32
	%89 = load %ast.AstNode** %tree
	%90 = getelementptr %ast.AstNode* %89, i32 0, i32 11
	%91 = getelementptr [0 x %ast.AstNode*]* %90, i32 0, i32 0
	%92 = load %ast.AstNode** %91
	%93 = getelementptr %ast.AstNode* %92, i32 0, i32 8
	%94 = load %type.TypeNode** %93
	%95 = getelementptr %type.TypeNode* %94, i32 0, i32 0
	%96 = load %type.TypeNode** %95
	%97 = getelementptr %type.TypeNode* %96, i32 0, i32 0
	%98 = load %type.TypeNode** %97
	%99 = getelementptr %type.TypeNode* %98, i32 0, i32 10
	%100 = load i32* %99
	%101 = load %target.ModelT** @target_Target
	%102 = getelementptr %target.ModelT* %101, i32 0, i32 2
	%103 = load i8* %102
	%104 = zext i8 %103 to i32
	%105 = udiv i32 %100, %104
	store i32 %105, i32* %size
	%106 = load i32* %alignment
	%107 = load %ast.AstNode** %tree
	%108 = getelementptr %ast.AstNode* %107, i32 0, i32 11
	%109 = getelementptr [0 x %ast.AstNode*]* %108, i32 0, i32 1
	%110 = load %ast.AstNode** %109
	%111 = getelementptr %ast.AstNode* %110, i32 0, i32 10
	%112 = load i64* %111
	%113 = trunc i64 %112 to i32
	%114 = load i32* %size
	%115 = mul i32 %113, %114
	%116 = call i32 @expr_CalcAlign(i32 %106, i32 %115)
	store i32 %116, i32* %alignment
	br label %L.23
L.25:
	store i32 0, i32* %alignment
	br label %L.23
L.23:
	br label %L.21
L.21:
	br label %L.4
L.10:
	%117 = load %ast.AstNode** %tree
	%118 = getelementptr %ast.AstNode* %117, i32 0, i32 8
	%119 = load %type.TypeNode** %118
	%120 = getelementptr %type.TypeNode* %119, i32 0, i32 11
	%121 = load i32* %120
	store i32 %121, i32* %alignment
	br label %L.4
L.3:
	%122 = getelementptr [30 x i8]* @S.577
	%123 = bitcast [30 x i8]* %122 to [0 x i8]*
	call void @lex_ErrorS(i8 0, [0 x i8]* %123)
	%124 = load %ast.AstNode** %tree
	call void @ast_Dump(%ast.AstNode* %124)
	br label %L.4
L.4:
	%125 = load i32* %alignment
	store i32 %125, i32* %rv.0
	br label %return
return:
	%126 = load i32* %rv.0
	ret i32 %126
}
define internal %ast.AstNode* @expr_GetSize(%ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%size = alloca %ast.AstNode*
	%nsize = alloca %ast.AstNode*
	%tsize = alloca i32
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 0
	%2 = load i8* %1
	%3 = zext i8 %2 to i32
	switch i32 %3, label %L.1 [
		i32 12, label %L.3
		i32 14, label %L.4
		i32 13, label %L.4
		i32 15, label %L.5
	]
L.3:
	%4 = load %type.TypeNode** @type_wordtype
	%5 = load %ast.AstNode** %node
	%6 = getelementptr %ast.AstNode* %5, i32 0, i32 8
	%7 = load %type.TypeNode** %6
	%8 = getelementptr %type.TypeNode* %7, i32 0, i32 0
	%9 = load %type.TypeNode** %8
	%10 = getelementptr %type.TypeNode* %9, i32 0, i32 10
	%11 = load i32* %10
	%12 = zext i32 %11 to i64
	%13 = load %target.ModelT** @target_Target
	%14 = getelementptr %target.ModelT* %13, i32 0, i32 2
	%15 = load i8* %14
	%16 = zext i8 %15 to i64
	%17 = udiv i64 %12, %16
	%18 = call %ast.AstNode* @ast_Const(%type.TypeNode* %4, i64 %17)
	store %ast.AstNode* %18, %ast.AstNode** %size
	br label %L.2
L.4:
	%19 = load %type.TypeNode** @type_wordtype
	%20 = load %ast.AstNode** %node
	%21 = getelementptr %ast.AstNode* %20, i32 0, i32 8
	%22 = load %type.TypeNode** %21
	%23 = getelementptr %type.TypeNode* %22, i32 0, i32 0
	%24 = load %type.TypeNode** %23
	%25 = getelementptr %type.TypeNode* %24, i32 0, i32 10
	%26 = load i32* %25
	%27 = zext i32 %26 to i64
	%28 = load %target.ModelT** @target_Target
	%29 = getelementptr %target.ModelT* %28, i32 0, i32 2
	%30 = load i8* %29
	%31 = zext i8 %30 to i64
	%32 = udiv i64 %27, %31
	%33 = call %ast.AstNode* @ast_Const(%type.TypeNode* %19, i64 %32)
	store %ast.AstNode* %33, %ast.AstNode** %size
	br label %L.2
L.5:
	%34 = load %type.TypeNode** @type_wordtype
	%35 = load %ast.AstNode** %node
	%36 = getelementptr %ast.AstNode* %35, i32 0, i32 8
	%37 = load %type.TypeNode** %36
	%38 = getelementptr %type.TypeNode* %37, i32 0, i32 0
	%39 = load %type.TypeNode** %38
	%40 = getelementptr %type.TypeNode* %39, i32 0, i32 0
	%41 = load %type.TypeNode** %40
	%42 = getelementptr %type.TypeNode* %41, i32 0, i32 10
	%43 = load i32* %42
	%44 = zext i32 %43 to i64
	%45 = load %target.ModelT** @target_Target
	%46 = getelementptr %target.ModelT* %45, i32 0, i32 2
	%47 = load i8* %46
	%48 = zext i8 %47 to i64
	%49 = udiv i64 %44, %48
	%50 = call %ast.AstNode* @ast_Const(%type.TypeNode* %34, i64 %49)
	store %ast.AstNode* %50, %ast.AstNode** %size
	%51 = load %type.TypeNode** @type_wordtype
	%52 = load %ast.AstNode** %node
	%53 = getelementptr %ast.AstNode* %52, i32 0, i32 11
	%54 = getelementptr [0 x %ast.AstNode*]* %53, i32 0, i32 2
	%55 = load %ast.AstNode** %54
	%56 = bitcast %ast.AstNode* %55 to %ast.AstNode*
	%57 = load %ast.AstNode** %size
	%58 = call %ast.AstNode* @ast_New2(i8 51, %type.TypeNode* %51, %ast.AstNode* %56, %ast.AstNode* %57)
	store %ast.AstNode* %58, %ast.AstNode** %size
	br label %L.2
L.1:
	br label %L.2
L.2:
	%59 = load %ast.AstNode** %size
	store %ast.AstNode* %59, %ast.AstNode** %rv.0
	br label %return
return:
	%60 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %60
}
define internal %ast.AstNode* @expr_GetOffset(%ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%tree = alloca %ast.AstNode*
	%ctree = alloca %ast.AstNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 0
	%2 = load i8* %1
	%3 = zext i8 %2 to i32
	switch i32 %3, label %L.1 [
		i32 13, label %L.3
		i32 14, label %L.4
	]
L.3:
	%f = alloca %symb.SymbNode*
	%n = alloca i32
	%offset = alloca i32
	%4 = load %ast.AstNode** %node
	%5 = getelementptr %ast.AstNode* %4, i32 0, i32 11
	%6 = getelementptr [0 x %ast.AstNode*]* %5, i32 0, i32 0
	%7 = load %ast.AstNode** %6
	%8 = bitcast %ast.AstNode* %7 to %ast.AstNode*
	%9 = call %ast.AstNode* @expr_GetOffset(%ast.AstNode* %8)
	store %ast.AstNode* %9, %ast.AstNode** %ctree
	store i32 0, i32* %offset
	store i32 0, i32* %n
	%10 = load %ast.AstNode** %node
	%11 = getelementptr %ast.AstNode* %10, i32 0, i32 11
	%12 = getelementptr [0 x %ast.AstNode*]* %11, i32 0, i32 0
	%13 = load %ast.AstNode** %12
	%14 = getelementptr %ast.AstNode* %13, i32 0, i32 8
	%15 = load %type.TypeNode** %14
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 0
	%17 = load %type.TypeNode** %16
	%18 = getelementptr %type.TypeNode* %17, i32 0, i32 4
	%19 = load %symb.SymbNode** %18
	%20 = bitcast %symb.SymbNode* %19 to %symb.SymbNode*
	store %symb.SymbNode* %20, %symb.SymbNode** %f
	br label %L.5
L.5:
	%21 = load %symb.SymbNode** %f
	%22 = icmp ne %symb.SymbNode* %21, null
	br i1 %22, label %L.8, label %L.9
L.8:
	%23 = load i32* %n
	%24 = zext i32 %23 to i64
	%25 = load %ast.AstNode** %node
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 10
	%27 = load i64* %26
	%28 = icmp ult i64 %24, %27
	br label %L.9
L.9:
	%29 = phi i1 [ false, %L.5 ], [ %28, %L.8 ]
	%30 = xor i1 %29, true
	br i1 %30, label %L.6, label %L.7
L.7:
	%31 = load i32* %offset
	%32 = load %symb.SymbNode** %f
	%33 = getelementptr %symb.SymbNode* %32, i32 0, i32 1
	%34 = load %type.TypeNode** %33
	%35 = getelementptr %type.TypeNode* %34, i32 0, i32 10
	%36 = load i32* %35
	%37 = load %target.ModelT** @target_Target
	%38 = getelementptr %target.ModelT* %37, i32 0, i32 2
	%39 = load i8* %38
	%40 = zext i8 %39 to i32
	%41 = udiv i32 %36, %40
	%42 = add i32 %31, %41
	store i32 %42, i32* %offset
	%43 = load %symb.SymbNode** %f
	%44 = getelementptr %symb.SymbNode* %43, i32 0, i32 0
	%45 = load %symb.SymbNode** %44
	%46 = bitcast %symb.SymbNode* %45 to %symb.SymbNode*
	store %symb.SymbNode* %46, %symb.SymbNode** %f
	%47 = load i32* %n
	%48 = add i32 %47, 1
	store i32 %48, i32* %n
	br label %L.5
L.6:
	%49 = load %type.TypeNode** @type_wordtype
	%50 = load i32* %offset
	%51 = zext i32 %50 to i64
	%52 = call %ast.AstNode* @ast_Const(%type.TypeNode* %49, i64 %51)
	store %ast.AstNode* %52, %ast.AstNode** %tree
	br label %L.2
L.4:
	%53 = load %ast.AstNode** %node
	%54 = getelementptr %ast.AstNode* %53, i32 0, i32 11
	%55 = getelementptr [0 x %ast.AstNode*]* %54, i32 0, i32 0
	%56 = load %ast.AstNode** %55
	%57 = bitcast %ast.AstNode* %56 to %ast.AstNode*
	%58 = call %ast.AstNode* @expr_GetOffset(%ast.AstNode* %57)
	store %ast.AstNode* %58, %ast.AstNode** %ctree
	%59 = load %type.TypeNode** @type_wordtype
	%60 = load %ast.AstNode** %node
	%61 = getelementptr %ast.AstNode* %60, i32 0, i32 11
	%62 = getelementptr [0 x %ast.AstNode*]* %61, i32 0, i32 0
	%63 = load %ast.AstNode** %62
	%64 = getelementptr %ast.AstNode* %63, i32 0, i32 8
	%65 = load %type.TypeNode** %64
	%66 = getelementptr %type.TypeNode* %65, i32 0, i32 0
	%67 = load %type.TypeNode** %66
	%68 = getelementptr %type.TypeNode* %67, i32 0, i32 0
	%69 = load %type.TypeNode** %68
	%70 = getelementptr %type.TypeNode* %69, i32 0, i32 10
	%71 = load i32* %70
	%72 = zext i32 %71 to i64
	%73 = load %target.ModelT** @target_Target
	%74 = getelementptr %target.ModelT* %73, i32 0, i32 2
	%75 = load i8* %74
	%76 = zext i8 %75 to i64
	%77 = udiv i64 %72, %76
	%78 = call %ast.AstNode* @ast_Const(%type.TypeNode* %59, i64 %77)
	store %ast.AstNode* %78, %ast.AstNode** %tree
	%79 = load %type.TypeNode** @type_wordtype
	%80 = load %ast.AstNode** %node
	%81 = getelementptr %ast.AstNode* %80, i32 0, i32 11
	%82 = getelementptr [0 x %ast.AstNode*]* %81, i32 0, i32 1
	%83 = load %ast.AstNode** %82
	%84 = bitcast %ast.AstNode* %83 to %ast.AstNode*
	%85 = load %type.TypeNode** @type_wordtype
	%86 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %84, %type.TypeNode* %85)
	%87 = load %ast.AstNode** %tree
	%88 = call %ast.AstNode* @ast_New2(i8 51, %type.TypeNode* %79, %ast.AstNode* %86, %ast.AstNode* %87)
	store %ast.AstNode* %88, %ast.AstNode** %tree
	br label %L.2
L.1:
	br label %L.2
L.2:
	%89 = load %ast.AstNode** %tree
	%90 = icmp ne %ast.AstNode* %89, null
	br i1 %90, label %L.10, label %L.11
L.10:
	%91 = load %ast.AstNode** %ctree
	%92 = icmp ne %ast.AstNode* %91, null
	br label %L.11
L.11:
	%93 = phi i1 [ false, %L.2 ], [ %92, %L.10 ]
	br i1 %93, label %L.13, label %L.12
L.13:
	%94 = load %type.TypeNode** @type_wordtype
	%95 = load %ast.AstNode** %tree
	%96 = load %ast.AstNode** %ctree
	%97 = call %ast.AstNode* @ast_New2(i8 49, %type.TypeNode* %94, %ast.AstNode* %95, %ast.AstNode* %96)
	store %ast.AstNode* %97, %ast.AstNode** %tree
	br label %L.12
L.12:
	%98 = load %ast.AstNode** %tree
	store %ast.AstNode* %98, %ast.AstNode** %rv.0
	br label %return
return:
	%99 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %99
}
define internal %ast.AstNode* @expr_Slice(%ast.AstNode* %array$, %ast.AstNode* %inx$, %ast.AstNode* %len$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%array = alloca %ast.AstNode*
	%inx = alloca %ast.AstNode*
	%len = alloca %ast.AstNode*
	store %ast.AstNode* %array$, %ast.AstNode** %array
	store %ast.AstNode* %inx$, %ast.AstNode** %inx
	store %ast.AstNode* %len$, %ast.AstNode** %len
	%at = alloca %type.TypeNode*
	%st = alloca %type.TypeNode*
	%tree = alloca %ast.AstNode*
	%blen = alloca i32
	%slen = alloca i32
	%0 = load %ast.AstNode** %array
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 0
	%4 = load %type.TypeNode** %3
	%5 = bitcast %type.TypeNode* %4 to %type.TypeNode*
	store %type.TypeNode* %5, %type.TypeNode** %at
	%6 = call %type.TypeNode* @type_New(i8 6)
	store %type.TypeNode* %6, %type.TypeNode** %st
	%7 = load %type.TypeNode** %at
	%8 = getelementptr %type.TypeNode* %7, i32 0, i32 0
	%9 = load %type.TypeNode** %8
	%10 = load %type.TypeNode** %st
	%11 = getelementptr %type.TypeNode* %10, i32 0, i32 0
	store %type.TypeNode* %9, %type.TypeNode** %11
	%12 = load %type.TypeNode** %at
	%13 = getelementptr %type.TypeNode* %12, i32 0, i32 21
	%14 = load i8* %13
	%15 = load %type.TypeNode** %st
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 21
	store i8 %14, i8* %16
	%17 = load %type.TypeNode** %at
	%18 = getelementptr %type.TypeNode* %17, i32 0, i32 16
	%19 = load i8* %18
	%20 = load %type.TypeNode** %st
	%21 = getelementptr %type.TypeNode* %20, i32 0, i32 16
	store i8 %19, i8* %21
	store i32 0, i32* %blen
	store i32 0, i32* %slen
	%22 = load %type.TypeNode** %at
	%23 = getelementptr %type.TypeNode* %22, i32 0, i32 25
	%24 = load i8* %23
	%25 = icmp ne i8 %24, 0
	%26 = xor i1 %25, true
	br i1 %26, label %L.2, label %L.1
L.2:
	%27 = load %type.TypeNode** %at
	%28 = call i32 @type_TypeNode_Span(%type.TypeNode* %27)
	store i32 %28, i32* %blen
	br label %L.1
L.1:
	%29 = load %ast.AstNode** %len
	%30 = icmp ne %ast.AstNode* %29, null
	br i1 %30, label %L.4, label %L.5
L.4:
	%31 = load %ast.AstNode** %len
	%32 = getelementptr %ast.AstNode* %31, i32 0, i32 0
	%33 = load i8* %32
	%34 = icmp eq i8 %33, 7
	br i1 %34, label %L.7, label %L.6
L.7:
	%35 = load %ast.AstNode** %len
	%36 = getelementptr %ast.AstNode* %35, i32 0, i32 10
	%37 = load i64* %36
	%38 = trunc i64 %37 to i32
	store i32 %38, i32* %slen
	br label %L.6
L.6:
	br label %L.3
L.5:
	%39 = load %type.TypeNode** @type_wordtype
	%40 = call %ast.AstNode* @ast_Const(%type.TypeNode* %39, i64 0)
	store %ast.AstNode* %40, %ast.AstNode** %len
	br label %L.3
L.3:
	%41 = load i32* %blen
	%42 = icmp eq i32 %41, 0
	br i1 %42, label %L.8, label %L.9
L.8:
	%43 = load i32* %slen
	%44 = icmp eq i32 %43, 0
	br label %L.9
L.9:
	%45 = phi i1 [ false, %L.3 ], [ %44, %L.8 ]
	br i1 %45, label %L.11, label %L.12
L.11:
	%46 = load %type.TypeNode** %st
	%47 = getelementptr %type.TypeNode* %46, i32 0, i32 25
	store i8 1, i8* %47
	br label %L.10
L.12:
	%48 = load i32* %slen
	%49 = icmp eq i32 %48, 0
	br i1 %49, label %L.14, label %L.15
L.14:
	%50 = load i32* %blen
	store i32 %50, i32* %slen
	%51 = load %ast.AstNode** %inx
	%52 = getelementptr %ast.AstNode* %51, i32 0, i32 0
	%53 = load i8* %52
	%54 = icmp eq i8 %53, 7
	br i1 %54, label %L.17, label %L.16
L.17:
	%55 = load i32* %blen
	%56 = load %ast.AstNode** %inx
	%57 = getelementptr %ast.AstNode* %56, i32 0, i32 10
	%58 = load i64* %57
	%59 = trunc i64 %58 to i32
	%60 = sub i32 %55, %59
	store i32 %60, i32* %slen
	br label %L.16
L.16:
	br label %L.13
L.15:
	br label %L.13
L.13:
	%61 = load i32* %slen
	%62 = zext i32 %61 to i64
	%63 = sub i64 %62, 1
	%64 = load %type.TypeNode** %st
	%65 = getelementptr %type.TypeNode* %64, i32 0, i32 8
	store i64 %63, i64* %65
	br label %L.10
L.10:
	%66 = load %type.TypeNode** %at
	%67 = getelementptr %type.TypeNode* %66, i32 0, i32 0
	%68 = load %type.TypeNode** %67
	%69 = getelementptr %type.TypeNode* %68, i32 0, i32 9
	%70 = load i32* %69
	%71 = load i32* %slen
	%72 = mul i32 %70, %71
	%73 = load %type.TypeNode** %st
	%74 = getelementptr %type.TypeNode* %73, i32 0, i32 9
	store i32 %72, i32* %74
	%75 = load %type.TypeNode** %st
	%76 = getelementptr %type.TypeNode* %75, i32 0, i32 9
	%77 = load i32* %76
	%78 = load %type.TypeNode** %st
	%79 = getelementptr %type.TypeNode* %78, i32 0, i32 10
	store i32 %77, i32* %79
	%80 = load %ast.AstNode** %inx
	%81 = icmp ne %ast.AstNode* %80, null
	br i1 %81, label %L.19, label %L.20
L.19:
	%82 = load %ast.AstNode** %inx
	%83 = getelementptr %ast.AstNode* %82, i32 0, i32 0
	%84 = load i8* %83
	%85 = icmp eq i8 %84, 7
	br i1 %85, label %L.22, label %L.23
L.22:
	%offs = alloca i32
	%86 = load %ast.AstNode** %inx
	%87 = getelementptr %ast.AstNode* %86, i32 0, i32 10
	%88 = load i64* %87
	%89 = trunc i64 %88 to i32
	%90 = load %type.TypeNode** %at
	%91 = getelementptr %type.TypeNode* %90, i32 0, i32 0
	%92 = load %type.TypeNode** %91
	%93 = getelementptr %type.TypeNode* %92, i32 0, i32 10
	%94 = load i32* %93
	%95 = load %target.ModelT** @target_Target
	%96 = getelementptr %target.ModelT* %95, i32 0, i32 2
	%97 = load i8* %96
	%98 = zext i8 %97 to i32
	%99 = udiv i32 %94, %98
	%100 = mul i32 %89, %99
	store i32 %100, i32* %offs
	%101 = load %type.TypeNode** %at
	%102 = getelementptr %type.TypeNode* %101, i32 0, i32 11
	%103 = load i32* %102
	%104 = load %target.ModelT** @target_Target
	%105 = getelementptr %target.ModelT* %104, i32 0, i32 2
	%106 = load i8* %105
	%107 = zext i8 %106 to i32
	%108 = udiv i32 %103, %107
	%109 = load i32* %offs
	%110 = call i32 @expr_CalcAlign(i32 %108, i32 %109)
	%111 = load %target.ModelT** @target_Target
	%112 = getelementptr %target.ModelT* %111, i32 0, i32 2
	%113 = load i8* %112
	%114 = zext i8 %113 to i32
	%115 = mul i32 %110, %114
	%116 = load %type.TypeNode** %st
	%117 = getelementptr %type.TypeNode* %116, i32 0, i32 11
	store i32 %115, i32* %117
	br label %L.21
L.23:
	%118 = load %type.TypeNode** %at
	%119 = getelementptr %type.TypeNode* %118, i32 0, i32 0
	%120 = load %type.TypeNode** %119
	%121 = getelementptr %type.TypeNode* %120, i32 0, i32 11
	%122 = load i32* %121
	%123 = load %type.TypeNode** %st
	%124 = getelementptr %type.TypeNode* %123, i32 0, i32 11
	store i32 %122, i32* %124
	br label %L.21
L.21:
	br label %L.18
L.20:
	%125 = load %type.TypeNode** @type_wordtype
	%126 = call %ast.AstNode* @ast_Const(%type.TypeNode* %125, i64 0)
	store %ast.AstNode* %126, %ast.AstNode** %inx
	br label %L.18
L.18:
	%127 = load %type.TypeNode** %st
	%128 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %127)
	%129 = load %ast.AstNode** %array
	%130 = load %ast.AstNode** %inx
	%131 = call %ast.AstNode* @ast_New2(i8 15, %type.TypeNode* %128, %ast.AstNode* %129, %ast.AstNode* %130)
	store %ast.AstNode* %131, %ast.AstNode** %tree
	%132 = load %ast.AstNode** %tree
	%133 = load %ast.AstNode** %len
	%134 = call %ast.AstNode* @ast_Child(%ast.AstNode* %132, %ast.AstNode* %133)
	store %ast.AstNode* %134, %ast.AstNode** %tree
	%135 = load %ast.AstNode** %tree
	store %ast.AstNode* %135, %ast.AstNode** %rv.0
	br label %return
return:
	%136 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %136
}
@S.578 = internal constant [17 x i8] c"Load via non-REF\00"
define internal %ast.AstNode* @expr_Load(%ast.AstNode* %tree$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	%t = alloca %type.TypeNode*
	%0 = load %ast.AstNode** %tree
	%1 = icmp eq %ast.AstNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load %ast.AstNode** %tree
	store %ast.AstNode* %2, %ast.AstNode** %rv.0
	br label %return
L.1:
	%3 = load %ast.AstNode** %tree
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 0
	%5 = load i8* %4
	%6 = zext i8 %5 to i32
	switch i32 %6, label %L.3 [
		i32 2, label %L.5
		i32 12, label %L.6
		i32 14, label %L.6
		i32 13, label %L.6
		i32 15, label %L.6
		i32 27, label %L.6
		i32 7, label %L.7
	]
L.5:
	%7 = load %ast.AstNode** %tree
	%8 = getelementptr %ast.AstNode* %7, i32 0, i32 8
	%9 = load %type.TypeNode** %8
	%10 = getelementptr %type.TypeNode* %9, i32 0, i32 3
	%11 = load %symb.SymbNode** %10
	%12 = getelementptr %symb.SymbNode* %11, i32 0, i32 22
	%13 = getelementptr [0 x i8]* %12
	%14 = bitcast [0 x i8]* %13 to [0 x i8]*
	call void @lex_ErrorI(i8 29, [0 x i8]* %14)
	store %ast.AstNode* null, %ast.AstNode** %tree
	br label %L.4
L.6:
	%15 = load %ast.AstNode** %tree
	%16 = getelementptr %ast.AstNode* %15, i32 0, i32 8
	%17 = load %type.TypeNode** %16
	store %type.TypeNode* %17, %type.TypeNode** %t
	%18 = load %type.TypeNode** %t
	%19 = getelementptr %type.TypeNode* %18, i32 0, i32 14
	%20 = load i8* %19
	%21 = icmp ne i8 %20, 5
	br i1 %21, label %L.9, label %L.8
L.9:
	%22 = getelementptr [17 x i8]* @S.578
	%23 = bitcast [17 x i8]* %22 to [0 x i8]*
	call void @lex_ErrorS(i8 86, [0 x i8]* %23)
	%24 = load %ast.AstNode** %tree
	call void @ast_Dump(%ast.AstNode* %24)
	store %ast.AstNode* null, %ast.AstNode** %rv.0
	br label %return
L.8:
	%25 = load %type.TypeNode** %t
	%26 = getelementptr %type.TypeNode* %25, i32 0, i32 0
	%27 = load %type.TypeNode** %26
	%28 = bitcast %type.TypeNode* %27 to %type.TypeNode*
	store %type.TypeNode* %28, %type.TypeNode** %t
	%29 = load %type.TypeNode** %t
	%30 = icmp ne %type.TypeNode* %29, null
	br i1 %30, label %L.11, label %L.12
L.11:
	%31 = load %type.TypeNode** %t
	%32 = load %ast.AstNode** %tree
	%33 = call %ast.AstNode* @ast_New1(i8 27, %type.TypeNode* %31, %ast.AstNode* %32)
	store %ast.AstNode* %33, %ast.AstNode** %tree
	%34 = load %type.TypeNode** %t
	%35 = getelementptr %type.TypeNode* %34, i32 0, i32 10
	%36 = load i32* %35
	%37 = load %ast.AstNode** %tree
	%38 = getelementptr %ast.AstNode* %37, i32 0, i32 7
	store i32 %36, i32* %38
	br label %L.10
L.12:
	call void @lex_Error(i8 23)
	br label %L.10
L.10:
	br label %L.4
L.7:
	%39 = load %ast.AstNode** %tree
	%40 = getelementptr %ast.AstNode* %39, i32 0, i32 8
	%41 = load %type.TypeNode** %40
	store %type.TypeNode* %41, %type.TypeNode** %t
	%42 = load %type.TypeNode** %t
	%43 = getelementptr %type.TypeNode* %42, i32 0, i32 14
	%44 = load i8* %43
	%45 = icmp eq i8 %44, 5
	br i1 %45, label %L.14, label %L.13
L.14:
	%46 = load %type.TypeNode** %t
	%47 = getelementptr %type.TypeNode* %46, i32 0, i32 0
	%48 = load %type.TypeNode** %47
	%49 = bitcast %type.TypeNode* %48 to %type.TypeNode*
	store %type.TypeNode* %49, %type.TypeNode** %t
	%50 = load %type.TypeNode** %t
	%51 = icmp ne %type.TypeNode* %50, null
	br i1 %51, label %L.16, label %L.17
L.16:
	%52 = load %type.TypeNode** %t
	%53 = load %ast.AstNode** %tree
	%54 = call %ast.AstNode* @ast_New1(i8 27, %type.TypeNode* %52, %ast.AstNode* %53)
	store %ast.AstNode* %54, %ast.AstNode** %tree
	%55 = load %type.TypeNode** %t
	%56 = getelementptr %type.TypeNode* %55, i32 0, i32 10
	%57 = load i32* %56
	%58 = load %ast.AstNode** %tree
	%59 = getelementptr %ast.AstNode* %58, i32 0, i32 7
	store i32 %57, i32* %59
	br label %L.15
L.17:
	call void @lex_Error(i8 23)
	br label %L.15
L.15:
	br label %L.13
L.13:
	br label %L.4
L.3:
	br label %L.4
L.4:
	%60 = load %ast.AstNode** %tree
	store %ast.AstNode* %60, %ast.AstNode** %rv.0
	br label %return
return:
	%61 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %61
}
define internal %ast.AstNode* @expr_CoerceToRef(%ast.AstNode* %tree$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	%0 = load %ast.AstNode** %tree
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 0
	%2 = load i8* %1
	%3 = icmp eq i8 %2, 27
	br i1 %3, label %L.2, label %L.3
L.2:
	%4 = load %ast.AstNode** %tree
	%5 = getelementptr %ast.AstNode* %4, i32 0, i32 11
	%6 = getelementptr [0 x %ast.AstNode*]* %5, i32 0, i32 0
	%7 = load %ast.AstNode** %6
	%8 = bitcast %ast.AstNode* %7 to %ast.AstNode*
	store %ast.AstNode* %8, %ast.AstNode** %tree
	br label %L.1
L.3:
	%9 = load %ast.AstNode** %tree
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 0
	%11 = load i8* %10
	%12 = icmp eq i8 %11, 32
	br i1 %12, label %L.4, label %L.5
L.4:
	%13 = load %ast.AstNode** %tree
	%14 = getelementptr %ast.AstNode* %13, i32 0, i32 11
	%15 = getelementptr [0 x %ast.AstNode*]* %14, i32 0, i32 0
	%16 = load %ast.AstNode** %15
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 0
	%18 = load i8* %17
	%19 = icmp eq i8 %18, 27
	br label %L.5
L.5:
	%20 = phi i1 [ false, %L.3 ], [ %19, %L.4 ]
	br i1 %20, label %L.7, label %L.6
L.7:
	%21 = load %ast.AstNode** %tree
	%22 = getelementptr %ast.AstNode* %21, i32 0, i32 11
	%23 = getelementptr [0 x %ast.AstNode*]* %22, i32 0, i32 0
	%24 = load %ast.AstNode** %23
	%25 = getelementptr %ast.AstNode* %24, i32 0, i32 11
	%26 = getelementptr [0 x %ast.AstNode*]* %25, i32 0, i32 0
	%27 = load %ast.AstNode** %26
	%28 = bitcast %ast.AstNode* %27 to %ast.AstNode*
	store %ast.AstNode* %28, %ast.AstNode** %tree
	br label %L.6
L.6:
	br label %L.1
L.1:
	%29 = load %ast.AstNode** %tree
	%30 = getelementptr %ast.AstNode* %29, i32 0, i32 0
	%31 = load i8* %30
	%32 = zext i8 %31 to i32
	switch i32 %32, label %L.8 [
		i32 9, label %L.10
		i32 10, label %L.10
		i32 12, label %L.11
	]
L.10:
	%33 = load %ast.AstNode** %tree
	%34 = getelementptr %ast.AstNode* %33, i32 0, i32 8
	%35 = load %type.TypeNode** %34
	%36 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %35)
	%37 = load %ast.AstNode** %tree
	%38 = call %ast.AstNode* @ast_New1(i8 16, %type.TypeNode* %36, %ast.AstNode* %37)
	store %ast.AstNode* %38, %ast.AstNode** %tree
	br label %L.9
L.11:
	br label %L.9
L.8:
	%39 = load %ast.AstNode** %tree
	%40 = getelementptr %ast.AstNode* %39, i32 0, i32 8
	%41 = load %type.TypeNode** %40
	%42 = load %ast.AstNode** %tree
	%43 = call %ast.AstNode* @ast_New1(i8 16, %type.TypeNode* %41, %ast.AstNode* %42)
	store %ast.AstNode* %43, %ast.AstNode** %tree
	br label %L.9
L.9:
	%44 = load %ast.AstNode** %tree
	store %ast.AstNode* %44, %ast.AstNode** %rv.0
	br label %return
return:
	%45 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %45
}
define internal zeroext i8 @expr_CheckRefAttributes(%type.TypeNode* %to$, %type.TypeNode* %fm$) nounwind {
L.0:
	%rv.0 = alloca i8
	%to = alloca %type.TypeNode*
	%fm = alloca %type.TypeNode*
	store %type.TypeNode* %to$, %type.TypeNode** %to
	store %type.TypeNode* %fm$, %type.TypeNode** %fm
	%0 = load %type.TypeNode** %to
	%1 = icmp eq %type.TypeNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.1:
	%2 = load %type.TypeNode** %fm
	%3 = icmp eq %type.TypeNode* %2, null
	br label %L.2
L.2:
	%4 = phi i1 [ true, %L.0 ], [ %3, %L.1 ]
	br i1 %4, label %L.4, label %L.3
L.4:
	store i8 0, i8* %rv.0
	br label %return
L.3:
	%5 = load %type.TypeNode** %to
	%6 = getelementptr %type.TypeNode* %5, i32 0, i32 16
	%7 = load i8* %6
	%8 = load %type.TypeNode** %fm
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 16
	%10 = load i8* %9
	%11 = icmp ne i8 %7, %10
	br i1 %11, label %L.6, label %L.5
L.6:
	store i8 0, i8* %rv.0
	br label %return
L.5:
	%12 = load %type.TypeNode** %to
	%13 = getelementptr %type.TypeNode* %12, i32 0, i32 11
	%14 = load i32* %13
	%15 = load %type.TypeNode** %fm
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 11
	%17 = load i32* %16
	%18 = icmp ugt i32 %14, %17
	br i1 %18, label %L.8, label %L.7
L.8:
	store i8 0, i8* %rv.0
	br label %return
L.7:
	%19 = load %type.TypeNode** %to
	%20 = getelementptr %type.TypeNode* %19, i32 0, i32 14
	%21 = load i8* %20
	%22 = icmp eq i8 %21, 5
	br i1 %22, label %L.9, label %L.10
L.9:
	%23 = load %type.TypeNode** %fm
	%24 = getelementptr %type.TypeNode* %23, i32 0, i32 14
	%25 = load i8* %24
	%26 = icmp eq i8 %25, 5
	br label %L.10
L.10:
	%27 = phi i1 [ false, %L.7 ], [ %26, %L.9 ]
	br i1 %27, label %L.12, label %L.11
L.12:
	%28 = load %type.TypeNode** %to
	%29 = getelementptr %type.TypeNode* %28, i32 0, i32 0
	%30 = load %type.TypeNode** %29
	%31 = bitcast %type.TypeNode* %30 to %type.TypeNode*
	%32 = load %type.TypeNode** %fm
	%33 = getelementptr %type.TypeNode* %32, i32 0, i32 0
	%34 = load %type.TypeNode** %33
	%35 = bitcast %type.TypeNode* %34 to %type.TypeNode*
	%36 = call i8 @expr_CheckRefAttributes(%type.TypeNode* %31, %type.TypeNode* %35)
	store i8 %36, i8* %rv.0
	br label %return
L.11:
	store i8 1, i8* %rv.0
	br label %return
return:
	%37 = load i8* %rv.0
	ret i8 %37
}
@S.579 = internal constant [34 x i8] c"Ref alignment or endian mismatch\0A\00"
define internal %ast.AstNode* @expr_Adjust(%ast.AstNode* %tree$, %type.TypeNode* %to$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%to = alloca %type.TypeNode*
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	store %type.TypeNode* %to$, %type.TypeNode** %to
	%fm = alloca %type.TypeNode*
	%ok = alloca i8
	%0 = load %ast.AstNode** %tree
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	store %type.TypeNode* %2, %type.TypeNode** %fm
	%3 = load %type.TypeNode** %fm
	%4 = icmp eq %type.TypeNode* %3, null
	br i1 %4, label %L.2, label %L.1
L.2:
	%5 = load %ast.AstNode** %tree
	store %ast.AstNode* %5, %ast.AstNode** %rv.0
	br label %return
L.1:
	store i8 1, i8* %ok
	%6 = load %type.TypeNode** %to
	%7 = getelementptr %type.TypeNode* %6, i32 0, i32 14
	%8 = load i8* %7
	%9 = zext i8 %8 to i32
	switch i32 %9, label %L.3 [
		i32 5, label %L.5
		i32 8, label %L.6
		i32 1, label %L.7
		i32 2, label %L.8
		i32 3, label %L.9
		i32 4, label %L.10
	]
L.5:
	%10 = load %type.TypeNode** %to
	%11 = getelementptr %type.TypeNode* %10, i32 0, i32 0
	%12 = load %type.TypeNode** %11
	%13 = icmp ne %type.TypeNode* %12, null
	br i1 %13, label %L.12, label %L.11
L.12:
	%14 = load %type.TypeNode** %fm
	%15 = getelementptr %type.TypeNode* %14, i32 0, i32 14
	%16 = load i8* %15
	%17 = icmp eq i8 %16, 5
	br i1 %17, label %L.13, label %L.14
L.13:
	%18 = load %type.TypeNode** %to
	%19 = load %type.TypeNode** %fm
	%20 = call i8 @type_Compat(%type.TypeNode* %18, %type.TypeNode* %19)
	%21 = icmp ne i8 %20, 0
	br label %L.14
L.14:
	%22 = phi i1 [ false, %L.12 ], [ %21, %L.13 ]
	br i1 %22, label %L.16, label %L.17
L.16:
	%23 = load %type.TypeNode** %fm
	%24 = load %type.TypeNode** %to
	%25 = icmp ne %type.TypeNode* %23, %24
	br i1 %25, label %L.19, label %L.18
L.19:
	%26 = load %ast.AstNode** %tree
	%27 = load %type.TypeNode** %to
	%28 = call %ast.AstNode* @ast_Cast(%ast.AstNode* %26, %type.TypeNode* %27)
	store %ast.AstNode* %28, %ast.AstNode** %tree
	%29 = load %ast.AstNode** %tree
	%30 = getelementptr %ast.AstNode* %29, i32 0, i32 8
	%31 = load %type.TypeNode** %30
	store %type.TypeNode* %31, %type.TypeNode** %fm
	br label %L.18
L.18:
	br label %L.15
L.17:
	%32 = load %ast.AstNode** %tree
	%33 = call %ast.AstNode* @expr_CoerceToRef(%ast.AstNode* %32)
	store %ast.AstNode* %33, %ast.AstNode** %tree
	%34 = load %ast.AstNode** %tree
	%35 = getelementptr %ast.AstNode* %34, i32 0, i32 8
	%36 = load %type.TypeNode** %35
	store %type.TypeNode* %36, %type.TypeNode** %fm
	%37 = load %type.TypeNode** %to
	%38 = getelementptr %type.TypeNode* %37, i32 0, i32 0
	%39 = load %type.TypeNode** %38
	%40 = load %type.TypeNode** @type_memtype
	%41 = icmp eq %type.TypeNode* %39, %40
	br i1 %41, label %L.21, label %L.20
L.20:
	%42 = load %type.TypeNode** %to
	%43 = load %type.TypeNode** %fm
	%44 = call i8 @type_Compat(%type.TypeNode* %42, %type.TypeNode* %43)
	%45 = icmp ne i8 %44, 0
	br label %L.21
L.21:
	%46 = phi i1 [ true, %L.17 ], [ %45, %L.20 ]
	br i1 %46, label %L.23, label %L.24
L.23:
	%47 = load %type.TypeNode** %fm
	%48 = load %type.TypeNode** %to
	%49 = icmp ne %type.TypeNode* %47, %48
	br i1 %49, label %L.26, label %L.25
L.26:
	%50 = load %ast.AstNode** %tree
	%51 = load %type.TypeNode** %to
	%52 = call %ast.AstNode* @ast_Cast(%ast.AstNode* %50, %type.TypeNode* %51)
	store %ast.AstNode* %52, %ast.AstNode** %tree
	%53 = load %ast.AstNode** %tree
	%54 = getelementptr %ast.AstNode* %53, i32 0, i32 8
	%55 = load %type.TypeNode** %54
	store %type.TypeNode* %55, %type.TypeNode** %fm
	br label %L.25
L.25:
	br label %L.22
L.24:
	store i8 0, i8* %ok
	br label %L.22
L.22:
	br label %L.15
L.15:
	%56 = load %type.TypeNode** %to
	%57 = getelementptr %type.TypeNode* %56, i32 0, i32 25
	%58 = load i8* %57
	%59 = icmp ne i8 %58, 0
	br i1 %59, label %L.27, label %L.28
L.27:
	%60 = load %type.TypeNode** %fm
	%61 = getelementptr %type.TypeNode* %60, i32 0, i32 25
	%62 = load i8* %61
	%63 = icmp ne i8 %62, 0
	%64 = xor i1 %63, true
	br label %L.28
L.28:
	%65 = phi i1 [ false, %L.15 ], [ %64, %L.27 ]
	br i1 %65, label %L.30, label %L.29
L.30:
	%66 = load %type.TypeNode** %to
	%67 = load %ast.AstNode** %tree
	%68 = call %ast.AstNode* @ast_New1(i8 17, %type.TypeNode* %66, %ast.AstNode* %67)
	store %ast.AstNode* %68, %ast.AstNode** %tree
	br label %L.29
L.29:
	%69 = load %type.TypeNode** %to
	%70 = load %type.TypeNode** %fm
	%71 = call i8 @expr_CheckRefAttributes(%type.TypeNode* %69, %type.TypeNode* %70)
	%72 = icmp ne i8 %71, 0
	%73 = xor i1 %72, true
	br i1 %73, label %L.32, label %L.31
L.32:
	%74 = getelementptr [34 x i8]* @S.579
	%75 = bitcast [34 x i8]* %74 to [0 x i8]*
	call void @lex_ErrorS(i8 0, [0 x i8]* %75)
	br label %L.31
L.31:
	br label %L.11
L.11:
	br label %L.4
L.6:
	%76 = load %type.TypeNode** %to
	%77 = load %type.TypeNode** %fm
	%78 = call i8 @type_Compat(%type.TypeNode* %76, %type.TypeNode* %77)
	store i8 %78, i8* %ok
	br label %L.4
L.7:
	%79 = load %type.TypeNode** %fm
	%80 = load %type.TypeNode** %to
	%81 = call i8 @type_Compat(%type.TypeNode* %79, %type.TypeNode* %80)
	store i8 %81, i8* %ok
	%82 = load i8* %ok
	%83 = icmp ne i8 %82, 0
	%84 = xor i1 %83, true
	br i1 %84, label %L.33, label %L.34
L.33:
	%85 = load %type.TypeNode** %fm
	%86 = getelementptr %type.TypeNode* %85, i32 0, i32 14
	%87 = load i8* %86
	%88 = icmp eq i8 %87, 2
	br label %L.34
L.34:
	%89 = phi i1 [ false, %L.7 ], [ %88, %L.33 ]
	br i1 %89, label %L.36, label %L.35
L.36:
	store i8 1, i8* %ok
	br label %L.35
L.35:
	%90 = load %type.TypeNode** %to
	%91 = getelementptr %type.TypeNode* %90, i32 0, i32 10
	%92 = load i32* %91
	%93 = load %ast.AstNode** %tree
	%94 = getelementptr %ast.AstNode* %93, i32 0, i32 7
	%95 = load i32* %94
	%96 = icmp ne i32 %92, %95
	br i1 %96, label %L.38, label %L.37
L.38:
	%97 = load %ast.AstNode** %tree
	%98 = load %type.TypeNode** %to
	%99 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %97, %type.TypeNode* %98)
	store %ast.AstNode* %99, %ast.AstNode** %tree
	br label %L.37
L.37:
	br label %L.4
L.8:
	%100 = load %type.TypeNode** %fm
	%101 = load %type.TypeNode** %to
	%102 = call i8 @type_Compat(%type.TypeNode* %100, %type.TypeNode* %101)
	store i8 %102, i8* %ok
	%103 = load i8* %ok
	%104 = icmp ne i8 %103, 0
	%105 = xor i1 %104, true
	br i1 %105, label %L.40, label %L.39
L.40:
	%106 = load %type.TypeNode** %fm
	%107 = getelementptr %type.TypeNode* %106, i32 0, i32 14
	%108 = load i8* %107
	%109 = zext i8 %108 to i32
	switch i32 %109, label %L.41 [
		i32 1, label %L.43
		i32 3, label %L.44
	]
L.43:
	store i8 1, i8* %ok
	br label %L.42
L.44:
	%110 = getelementptr %A.3* @feature, i32 0, i32 4
	%111 = load i8* %110
	%112 = icmp ne i8 %111, 0
	br i1 %112, label %L.46, label %L.45
L.46:
	call void @lex_Error(i8 4)
	br label %L.45
L.45:
	store i8 1, i8* %ok
	br label %L.42
L.41:
	br label %L.42
L.42:
	br label %L.39
L.39:
	%113 = load %type.TypeNode** %to
	%114 = getelementptr %type.TypeNode* %113, i32 0, i32 10
	%115 = load i32* %114
	%116 = load %ast.AstNode** %tree
	%117 = getelementptr %ast.AstNode* %116, i32 0, i32 7
	%118 = load i32* %117
	%119 = icmp ne i32 %115, %118
	br i1 %119, label %L.48, label %L.47
L.48:
	%120 = load %ast.AstNode** %tree
	%121 = load %type.TypeNode** %to
	%122 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %120, %type.TypeNode* %121)
	store %ast.AstNode* %122, %ast.AstNode** %tree
	br label %L.47
L.47:
	br label %L.4
L.9:
	%123 = load %type.TypeNode** %fm
	%124 = load %type.TypeNode** %to
	%125 = call i8 @type_Compat(%type.TypeNode* %123, %type.TypeNode* %124)
	store i8 %125, i8* %ok
	%126 = load i8* %ok
	%127 = icmp ne i8 %126, 0
	%128 = xor i1 %127, true
	br i1 %128, label %L.49, label %L.50
L.49:
	%129 = load %type.TypeNode** %fm
	%130 = getelementptr %type.TypeNode* %129, i32 0, i32 14
	%131 = load i8* %130
	%132 = icmp eq i8 %131, 2
	br label %L.50
L.50:
	%133 = phi i1 [ false, %L.9 ], [ %132, %L.49 ]
	br i1 %133, label %L.52, label %L.51
L.52:
	%134 = getelementptr %A.3* @feature, i32 0, i32 4
	%135 = load i8* %134
	%136 = icmp ne i8 %135, 0
	br i1 %136, label %L.54, label %L.53
L.54:
	call void @lex_Error(i8 3)
	br label %L.53
L.53:
	store i8 1, i8* %ok
	br label %L.51
L.51:
	%137 = load %type.TypeNode** %to
	%138 = getelementptr %type.TypeNode* %137, i32 0, i32 10
	%139 = load i32* %138
	%140 = load %ast.AstNode** %tree
	%141 = getelementptr %ast.AstNode* %140, i32 0, i32 7
	%142 = load i32* %141
	%143 = icmp ne i32 %139, %142
	br i1 %143, label %L.56, label %L.55
L.56:
	%144 = load %ast.AstNode** %tree
	%145 = load %type.TypeNode** %to
	%146 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %144, %type.TypeNode* %145)
	store %ast.AstNode* %146, %ast.AstNode** %tree
	br label %L.55
L.55:
	br label %L.4
L.10:
	%147 = load %type.TypeNode** %to
	%148 = getelementptr %type.TypeNode* %147, i32 0, i32 10
	%149 = load i32* %148
	%150 = load %ast.AstNode** %tree
	%151 = getelementptr %ast.AstNode* %150, i32 0, i32 7
	%152 = load i32* %151
	%153 = icmp ne i32 %149, %152
	br i1 %153, label %L.58, label %L.57
L.58:
	%154 = load %ast.AstNode** %tree
	%155 = load %type.TypeNode** %to
	%156 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %154, %type.TypeNode* %155)
	store %ast.AstNode* %156, %ast.AstNode** %tree
	br label %L.57
L.57:
	br label %L.4
L.3:
	br label %L.4
L.4:
	%157 = load i8* %ok
	%158 = icmp ne i8 %157, 0
	%159 = xor i1 %158, true
	br i1 %159, label %L.60, label %L.59
L.60:
	call void @lex_Error(i8 41)
	br label %L.59
L.59:
	%160 = load %ast.AstNode** %tree
	store %ast.AstNode* %160, %ast.AstNode** %rv.0
	br label %return
return:
	%161 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %161
}
define internal zeroext i8 @expr_IsSignedBinOp(%ast.AstNode* %lhs$, %ast.AstNode* %rhs$) nounwind {
L.0:
	%rv.0 = alloca i8
	%lhs = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	store %ast.AstNode* %lhs$, %ast.AstNode** %lhs
	store %ast.AstNode* %rhs$, %ast.AstNode** %rhs
	%0 = load %ast.AstNode** %lhs
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 14
	%4 = load i8* %3
	%5 = icmp eq i8 %4, 3
	br i1 %5, label %L.2, label %L.1
L.1:
	%6 = load %ast.AstNode** %rhs
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 8
	%8 = load %type.TypeNode** %7
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 14
	%10 = load i8* %9
	%11 = icmp eq i8 %10, 3
	br label %L.2
L.2:
	%12 = phi i1 [ true, %L.0 ], [ %11, %L.1 ]
	br i1 %12, label %L.4, label %L.3
L.4:
	store i8 1, i8* %rv.0
	br label %return
L.3:
	store i8 0, i8* %rv.0
	br label %return
return:
	%13 = load i8* %rv.0
	ret i8 %13
}
define internal i32 @expr_FindFlexSize(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca i32
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%size = alloca i32
	%bt = alloca %type.TypeNode*
	store i32 1, i32* %size
	%0 = load %type.TypeNode** %t
	%1 = icmp ne %type.TypeNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load %type.TypeNode** %t
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 25
	%4 = load i8* %3
	%5 = icmp ne i8 %4, 0
	br i1 %5, label %L.4, label %L.5
L.4:
	%6 = load %type.TypeNode** %t
	%7 = getelementptr %type.TypeNode* %6, i32 0, i32 14
	%8 = load i8* %7
	%9 = zext i8 %8 to i32
	switch i32 %9, label %L.6 [
		i32 6, label %L.8
		i32 7, label %L.9
	]
L.8:
	%10 = load %type.TypeNode** %t
	%11 = getelementptr %type.TypeNode* %10, i32 0, i32 0
	%12 = load %type.TypeNode** %11
	%13 = bitcast %type.TypeNode* %12 to %type.TypeNode*
	store %type.TypeNode* %13, %type.TypeNode** %bt
	br label %L.7
L.9:
	%f = alloca %symb.SymbNode*
	store %type.TypeNode* null, %type.TypeNode** %bt
	%14 = load %type.TypeNode** %t
	%15 = getelementptr %type.TypeNode* %14, i32 0, i32 4
	%16 = load %symb.SymbNode** %15
	%17 = bitcast %symb.SymbNode* %16 to %symb.SymbNode*
	store %symb.SymbNode* %17, %symb.SymbNode** %f
	br label %L.10
L.10:
	%18 = load %symb.SymbNode** %f
	%19 = icmp ne %symb.SymbNode* %18, null
	%20 = xor i1 %19, true
	br i1 %20, label %L.11, label %L.12
L.12:
	%21 = load %symb.SymbNode** %f
	%22 = getelementptr %symb.SymbNode* %21, i32 0, i32 1
	%23 = load %type.TypeNode** %22
	store %type.TypeNode* %23, %type.TypeNode** %bt
	%24 = load %symb.SymbNode** %f
	%25 = getelementptr %symb.SymbNode* %24, i32 0, i32 0
	%26 = load %symb.SymbNode** %25
	%27 = bitcast %symb.SymbNode* %26 to %symb.SymbNode*
	store %symb.SymbNode* %27, %symb.SymbNode** %f
	br label %L.10
L.11:
	br label %L.7
L.6:
	br label %L.7
L.7:
	%28 = load %type.TypeNode** %bt
	%29 = icmp ne %type.TypeNode* %28, null
	br i1 %29, label %L.14, label %L.13
L.14:
	%30 = load %type.TypeNode** %bt
	%31 = call i32 @expr_FindFlexSize(%type.TypeNode* %30)
	store i32 %31, i32* %size
	br label %L.13
L.13:
	br label %L.3
L.5:
	%32 = load %type.TypeNode** %t
	%33 = getelementptr %type.TypeNode* %32, i32 0, i32 10
	%34 = load i32* %33
	%35 = load %target.ModelT** @target_Target
	%36 = getelementptr %target.ModelT* %35, i32 0, i32 2
	%37 = load i8* %36
	%38 = zext i8 %37 to i32
	%39 = udiv i32 %34, %38
	store i32 %39, i32* %size
	br label %L.3
L.3:
	br label %L.1
L.1:
	%40 = load i32* %size
	store i32 %40, i32* %rv.0
	br label %return
return:
	%41 = load i32* %rv.0
	ret i32 %41
}
define internal %ast.AstNode* @expr_GetSizeSpec(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%size = alloca %ast.AstNode*
	%temp = alloca %ast.AstNode*
	%tok = alloca i8
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load %type.TypeNode** @type_wordtype
	%2 = load %type.TypeNode** %t
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 10
	%4 = load i32* %3
	%5 = zext i32 %4 to i64
	%6 = load %target.ModelT** @target_Target
	%7 = getelementptr %target.ModelT* %6, i32 0, i32 2
	%8 = load i8* %7
	%9 = zext i8 %8 to i64
	%10 = udiv i64 %5, %9
	%11 = call %ast.AstNode* @ast_Const(%type.TypeNode* %1, i64 %10)
	store %ast.AstNode* %11, %ast.AstNode** %size
	%12 = load i8* %tok
	%13 = icmp eq i8 %12, 32
	br i1 %13, label %L.2, label %L.3
L.2:
	%14 = call i8 @lex_Next()
	store i8 %14, i8* %tok
	%15 = load %type.TypeNode** %t
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 25
	%17 = load i8* %16
	%18 = icmp ne i8 %17, 0
	%19 = xor i1 %18, true
	br i1 %19, label %L.5, label %L.4
L.5:
	call void @lex_Error(i8 81)
	br label %L.4
L.4:
	%20 = load %type.TypeNode** @type_wordtype
	%21 = call %ast.AstNode* @expr_Const(%type.TypeNode* %20)
	store %ast.AstNode* %21, %ast.AstNode** %temp
	%22 = load %type.TypeNode** @type_wordtype
	%23 = load %ast.AstNode** %temp
	%24 = load %type.TypeNode** @type_wordtype
	%25 = load %type.TypeNode** %t
	%26 = call i32 @expr_FindFlexSize(%type.TypeNode* %25)
	%27 = zext i32 %26 to i64
	%28 = call %ast.AstNode* @ast_Const(%type.TypeNode* %24, i64 %27)
	%29 = call %ast.AstNode* @ast_New2(i8 51, %type.TypeNode* %22, %ast.AstNode* %23, %ast.AstNode* %28)
	store %ast.AstNode* %29, %ast.AstNode** %temp
	%30 = load %type.TypeNode** @type_wordtype
	%31 = load %ast.AstNode** %size
	%32 = load %ast.AstNode** %temp
	%33 = call %ast.AstNode* @ast_New2(i8 49, %type.TypeNode* %30, %ast.AstNode* %31, %ast.AstNode* %32)
	store %ast.AstNode* %33, %ast.AstNode** %size
	%34 = call i8 @lex_Expect(i8 33)
	store i8 %34, i8* %tok
	br label %L.1
L.3:
	%35 = load %type.TypeNode** %t
	%36 = getelementptr %type.TypeNode* %35, i32 0, i32 25
	%37 = load i8* %36
	%38 = icmp ne i8 %37, 0
	br i1 %38, label %L.7, label %L.6
L.7:
	call void @lex_Error(i8 82)
	br label %L.6
L.6:
	br label %L.1
L.1:
	%39 = load %ast.AstNode** %size
	store %ast.AstNode* %39, %ast.AstNode** %rv.0
	br label %return
return:
	%40 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %40
}
define internal %ast.AstNode* @expr_GetSpaceSpec(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%space = alloca %ast.AstNode*
	%tok = alloca i8
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 5
	br i1 %2, label %L.2, label %L.3
L.2:
	%3 = call i8 @lex_Next()
	store i8 %3, i8* %tok
	%4 = load %type.TypeNode** @type_wordtype
	%5 = call %ast.AstNode* @expr_Const(%type.TypeNode* %4)
	store %ast.AstNode* %5, %ast.AstNode** %space
	br label %L.1
L.3:
	%6 = load %type.TypeNode** @type_wordtype
	%7 = call %ast.AstNode* @ast_Const(%type.TypeNode* %6, i64 0)
	store %ast.AstNode* %7, %ast.AstNode** %space
	br label %L.1
L.1:
	%8 = load %ast.AstNode** %space
	store %ast.AstNode* %8, %ast.AstNode** %rv.0
	br label %return
return:
	%9 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %9
}
define internal { %ast.AstNode*, %ast.AstNode* } @expr_SizeSpace(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%rv.1 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%size = alloca %ast.AstNode*
	%space = alloca %ast.AstNode*
	%temp = alloca %ast.AstNode*
	%tok = alloca i8
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load %type.TypeNode** @type_wordtype
	%2 = load %type.TypeNode** %t
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 10
	%4 = load i32* %3
	%5 = zext i32 %4 to i64
	%6 = load %target.ModelT** @target_Target
	%7 = getelementptr %target.ModelT* %6, i32 0, i32 2
	%8 = load i8* %7
	%9 = zext i8 %8 to i64
	%10 = udiv i64 %5, %9
	%11 = call %ast.AstNode* @ast_Const(%type.TypeNode* %1, i64 %10)
	store %ast.AstNode* %11, %ast.AstNode** %size
	%12 = load i8* %tok
	%13 = icmp eq i8 %12, 32
	br i1 %13, label %L.2, label %L.3
L.2:
	%14 = call i8 @lex_Next()
	store i8 %14, i8* %tok
	%15 = load %type.TypeNode** %t
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 25
	%17 = load i8* %16
	%18 = icmp ne i8 %17, 0
	%19 = xor i1 %18, true
	br i1 %19, label %L.5, label %L.4
L.5:
	call void @lex_Error(i8 81)
	br label %L.4
L.4:
	%20 = load %type.TypeNode** @type_wordtype
	%21 = call %ast.AstNode* @expr_Const(%type.TypeNode* %20)
	store %ast.AstNode* %21, %ast.AstNode** %temp
	%22 = load %type.TypeNode** @type_wordtype
	%23 = load %ast.AstNode** %temp
	%24 = load %type.TypeNode** @type_wordtype
	%25 = load %type.TypeNode** %t
	%26 = call i32 @expr_FindFlexSize(%type.TypeNode* %25)
	%27 = zext i32 %26 to i64
	%28 = call %ast.AstNode* @ast_Const(%type.TypeNode* %24, i64 %27)
	%29 = call %ast.AstNode* @ast_New2(i8 51, %type.TypeNode* %22, %ast.AstNode* %23, %ast.AstNode* %28)
	store %ast.AstNode* %29, %ast.AstNode** %temp
	%30 = load %type.TypeNode** @type_wordtype
	%31 = load %ast.AstNode** %size
	%32 = load %ast.AstNode** %temp
	%33 = call %ast.AstNode* @ast_New2(i8 49, %type.TypeNode* %30, %ast.AstNode* %31, %ast.AstNode* %32)
	store %ast.AstNode* %33, %ast.AstNode** %size
	%34 = call i8 @lex_Expect(i8 33)
	store i8 %34, i8* %tok
	br label %L.1
L.3:
	%35 = load %type.TypeNode** %t
	%36 = getelementptr %type.TypeNode* %35, i32 0, i32 25
	%37 = load i8* %36
	%38 = icmp ne i8 %37, 0
	br i1 %38, label %L.7, label %L.6
L.7:
	call void @lex_Error(i8 82)
	br label %L.6
L.6:
	br label %L.1
L.1:
	%39 = load i8* %tok
	%40 = icmp eq i8 %39, 5
	br i1 %40, label %L.9, label %L.10
L.9:
	%41 = call i8 @lex_Next()
	store i8 %41, i8* %tok
	%42 = load %type.TypeNode** @type_wordtype
	%43 = call %ast.AstNode* @expr_Const(%type.TypeNode* %42)
	store %ast.AstNode* %43, %ast.AstNode** %space
	br label %L.8
L.10:
	%44 = load %type.TypeNode** @type_wordtype
	%45 = call %ast.AstNode* @ast_Const(%type.TypeNode* %44, i64 0)
	store %ast.AstNode* %45, %ast.AstNode** %space
	br label %L.8
L.8:
	%46 = load %ast.AstNode** %size
	store %ast.AstNode* %46, %ast.AstNode** %rv.0
	%47 = load %ast.AstNode** %space
	store %ast.AstNode* %47, %ast.AstNode** %rv.1
	br label %return
return:
	%48 = load %ast.AstNode** %rv.0
	%49 = load %ast.AstNode** %rv.1
	%mrv0 = insertvalue { %ast.AstNode*, %ast.AstNode* } undef,%ast.AstNode* %48,0
	%mrv1 = insertvalue { %ast.AstNode*, %ast.AstNode* } %mrv0,%ast.AstNode* %49,1
	ret  { %ast.AstNode*, %ast.AstNode* } %mrv1

}
define internal %ast.AstNode* @expr_New() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%size = alloca %ast.AstNode*
	%s = alloca %symb.SymbNode*
	%tok = alloca i8
	%t = alloca %type.TypeNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 41
	br i1 %2, label %L.2, label %L.3
L.2:
	store %type.TypeNode* null, %type.TypeNode** %t
	%3 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%4 = call %symb.SymbNode* @symb_FindKind([0 x i8]* %3, i8 2)
	store %symb.SymbNode* %4, %symb.SymbNode** %s
	%5 = load %symb.SymbNode** %s
	%6 = icmp ne %symb.SymbNode* %5, null
	br i1 %6, label %L.5, label %L.4
L.5:
	%7 = load %symb.SymbNode** %s
	%8 = getelementptr %symb.SymbNode* %7, i32 0, i32 1
	%9 = load %type.TypeNode** %8
	store %type.TypeNode* %9, %type.TypeNode** %t
	br label %L.4
L.4:
	%10 = call i8 @lex_Next()
	store i8 %10, i8* %tok
	%11 = load %type.TypeNode** %t
	%12 = icmp ne %type.TypeNode* %11, null
	br i1 %12, label %L.7, label %L.6
L.7:
	%13 = load %type.TypeNode** %t
	%14 = call %ast.AstNode* @expr_GetSizeSpec(%type.TypeNode* %13)
	store %ast.AstNode* %14, %ast.AstNode** %size
	%15 = call %ast.AstNode* @ast_New(i8 18, %type.TypeNode* null)
	store %ast.AstNode* %15, %ast.AstNode** %tree
	%16 = load %symb.SymbNode** @symb_libnew
	%17 = load %ast.AstNode** %tree
	%18 = getelementptr %ast.AstNode* %17, i32 0, i32 9
	store %symb.SymbNode* %16, %symb.SymbNode** %18
	%19 = load %type.TypeNode** @type_addrtype
	%20 = load %ast.AstNode** %tree
	%21 = getelementptr %ast.AstNode* %20, i32 0, i32 8
	store %type.TypeNode* %19, %type.TypeNode** %21
	%22 = load %target.ModelT** @target_Target
	%23 = getelementptr %target.ModelT* %22, i32 0, i32 6
	%24 = getelementptr %target.SizeAlign* %23, i32 0, i32 0
	%25 = load i8* %24
	%26 = zext i8 %25 to i32
	%27 = load %ast.AstNode** %tree
	%28 = getelementptr %ast.AstNode* %27, i32 0, i32 7
	store i32 %26, i32* %28
	%29 = load %ast.AstNode** %tree
	%30 = load %ast.AstNode** %size
	%31 = call %ast.AstNode* @ast_Child(%ast.AstNode* %29, %ast.AstNode* %30)
	store %ast.AstNode* %31, %ast.AstNode** %tree
	%32 = load %ast.AstNode** %tree
	%33 = load %type.TypeNode** @type_wordtype
	%34 = load %type.TypeNode** %t
	%35 = getelementptr %type.TypeNode* %34, i32 0, i32 11
	%36 = load i32* %35
	%37 = zext i32 %36 to i64
	%38 = load %target.ModelT** @target_Target
	%39 = getelementptr %target.ModelT* %38, i32 0, i32 2
	%40 = load i8* %39
	%41 = zext i8 %40 to i64
	%42 = udiv i64 %37, %41
	%43 = call %ast.AstNode* @ast_Const(%type.TypeNode* %33, i64 %42)
	%44 = call %ast.AstNode* @ast_Child(%ast.AstNode* %32, %ast.AstNode* %43)
	store %ast.AstNode* %44, %ast.AstNode** %tree
	%45 = load %ast.AstNode** %tree
	%46 = load %type.TypeNode** %t
	%47 = call %ast.AstNode* @expr_GetSpaceSpec(%type.TypeNode* %46)
	%48 = call %ast.AstNode* @ast_Child(%ast.AstNode* %45, %ast.AstNode* %47)
	store %ast.AstNode* %48, %ast.AstNode** %tree
	%49 = load %symb.SymbNode** %s
	%50 = getelementptr %symb.SymbNode* %49, i32 0, i32 1
	%51 = load %type.TypeNode** %50
	%52 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %51)
	%53 = load %ast.AstNode** %tree
	%54 = call %ast.AstNode* @ast_New1(i8 17, %type.TypeNode* %52, %ast.AstNode* %53)
	store %ast.AstNode* %54, %ast.AstNode** %tree
	br label %L.6
L.6:
	br label %L.1
L.3:
	call void @lex_Error(i8 18)
	br label %L.1
L.1:
	%55 = load %ast.AstNode** %tree
	store %ast.AstNode* %55, %ast.AstNode** %rv.0
	br label %return
return:
	%56 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %56
}
define internal %ast.AstNode* @expr_Delete() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%varb = alloca %ast.AstNode*
	%size = alloca %ast.AstNode*
	%temp = alloca %ast.AstNode*
	%tok = alloca i8
	%t = alloca %type.TypeNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = call %ast.AstNode* @expr_GetLHS()
	store %ast.AstNode* %0, %ast.AstNode** %varb
	%1 = load i8* @lex_Token
	store i8 %1, i8* %tok
	%2 = load %ast.AstNode** %varb
	%3 = icmp ne %ast.AstNode* %2, null
	br i1 %3, label %L.2, label %L.3
L.2:
	%4 = load %ast.AstNode** %varb
	%5 = call %ast.AstNode* @expr_Load(%ast.AstNode* %4)
	store %ast.AstNode* %5, %ast.AstNode** %varb
	%6 = load %ast.AstNode** %varb
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 8
	%8 = load %type.TypeNode** %7
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 0
	%10 = load %type.TypeNode** %9
	%11 = bitcast %type.TypeNode* %10 to %type.TypeNode*
	store %type.TypeNode* %11, %type.TypeNode** %t
	%12 = load %type.TypeNode** %t
	%13 = icmp ne %type.TypeNode* %12, null
	br i1 %13, label %L.5, label %L.4
L.5:
	%14 = load %type.TypeNode** %t
	%15 = call %ast.AstNode* @expr_GetSizeSpec(%type.TypeNode* %14)
	store %ast.AstNode* %15, %ast.AstNode** %size
	%16 = call %ast.AstNode* @ast_New(i8 18, %type.TypeNode* null)
	store %ast.AstNode* %16, %ast.AstNode** %tree
	%17 = load %symb.SymbNode** @symb_libdel
	%18 = load %ast.AstNode** %tree
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 9
	store %symb.SymbNode* %17, %symb.SymbNode** %19
	%20 = load %type.TypeNode** @type_addrtype
	%21 = load %ast.AstNode** %varb
	%22 = call %ast.AstNode* @ast_New1(i8 17, %type.TypeNode* %20, %ast.AstNode* %21)
	store %ast.AstNode* %22, %ast.AstNode** %temp
	%23 = load %ast.AstNode** %tree
	%24 = load %ast.AstNode** %temp
	%25 = call %ast.AstNode* @ast_Child(%ast.AstNode* %23, %ast.AstNode* %24)
	store %ast.AstNode* %25, %ast.AstNode** %tree
	%26 = load %ast.AstNode** %tree
	%27 = load %ast.AstNode** %size
	%28 = call %ast.AstNode* @ast_Child(%ast.AstNode* %26, %ast.AstNode* %27)
	store %ast.AstNode* %28, %ast.AstNode** %tree
	%29 = load %ast.AstNode** %tree
	%30 = load %type.TypeNode** %t
	%31 = call %ast.AstNode* @expr_GetSpaceSpec(%type.TypeNode* %30)
	%32 = call %ast.AstNode* @ast_Child(%ast.AstNode* %29, %ast.AstNode* %31)
	store %ast.AstNode* %32, %ast.AstNode** %tree
	br label %L.4
L.4:
	br label %L.1
L.3:
	call void @lex_Error(i8 18)
	br label %L.1
L.1:
	%33 = load %ast.AstNode** %tree
	store %ast.AstNode* %33, %ast.AstNode** %rv.0
	br label %return
return:
	%34 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %34
}
@S.580 = internal constant [23 x i8] c"expr.Zero: VAR not REF\00"
define internal %ast.AstNode* @expr_Zero() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%temp = alloca %ast.AstNode*
	%size = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	%align = alloca i32
	%tok = alloca i8
	%0 = call %ast.AstNode* @expr_GetLHS()
	store %ast.AstNode* %0, %ast.AstNode** %tree
	%1 = load i8* @lex_Token
	store i8 %1, i8* %tok
	%2 = load %ast.AstNode** %tree
	%3 = icmp ne %ast.AstNode* %2, null
	br i1 %3, label %L.2, label %L.1
L.2:
	%4 = load %ast.AstNode** %tree
	%5 = getelementptr %ast.AstNode* %4, i32 0, i32 0
	%6 = load i8* %5
	%7 = zext i8 %6 to i32
	switch i32 %7, label %L.3 [
		i32 12, label %L.5
	]
L.5:
	%8 = load %ast.AstNode** %tree
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 8
	%10 = load %type.TypeNode** %9
	%11 = getelementptr %type.TypeNode* %10, i32 0, i32 14
	%12 = load i8* %11
	%13 = icmp eq i8 %12, 5
	br i1 %13, label %L.7, label %L.8
L.7:
	%14 = load %ast.AstNode** %tree
	%15 = getelementptr %ast.AstNode* %14, i32 0, i32 8
	%16 = load %type.TypeNode** %15
	%17 = getelementptr %type.TypeNode* %16, i32 0, i32 0
	%18 = load %type.TypeNode** %17
	%19 = bitcast %type.TypeNode* %18 to %type.TypeNode*
	store %type.TypeNode* %19, %type.TypeNode** %t
	%20 = load %type.TypeNode** %t
	%21 = getelementptr %type.TypeNode* %20, i32 0, i32 14
	%22 = load i8* %21
	%23 = icmp eq i8 %22, 5
	br i1 %23, label %L.10, label %L.9
L.10:
	%24 = load %type.TypeNode** %t
	%25 = load %ast.AstNode** %tree
	%26 = call %ast.AstNode* @ast_New1(i8 27, %type.TypeNode* %24, %ast.AstNode* %25)
	store %ast.AstNode* %26, %ast.AstNode** %tree
	%27 = load %type.TypeNode** %t
	%28 = getelementptr %type.TypeNode* %27, i32 0, i32 0
	%29 = load %type.TypeNode** %28
	%30 = bitcast %type.TypeNode* %29 to %type.TypeNode*
	store %type.TypeNode* %30, %type.TypeNode** %t
	br label %L.9
L.9:
	br label %L.6
L.8:
	%31 = getelementptr [23 x i8]* @S.580
	%32 = bitcast [23 x i8]* %31 to [0 x i8]*
	call void @lex_ErrorS(i8 86, [0 x i8]* %32)
	store %ast.AstNode* null, %ast.AstNode** %rv.0
	br label %return
L.6:
	%33 = load %type.TypeNode** @type_wordtype
	%34 = load %type.TypeNode** %t
	%35 = getelementptr %type.TypeNode* %34, i32 0, i32 10
	%36 = load i32* %35
	%37 = zext i32 %36 to i64
	%38 = load %target.ModelT** @target_Target
	%39 = getelementptr %target.ModelT* %38, i32 0, i32 2
	%40 = load i8* %39
	%41 = zext i8 %40 to i64
	%42 = udiv i64 %37, %41
	%43 = call %ast.AstNode* @ast_Const(%type.TypeNode* %33, i64 %42)
	store %ast.AstNode* %43, %ast.AstNode** %size
	%44 = load %type.TypeNode** %t
	%45 = getelementptr %type.TypeNode* %44, i32 0, i32 11
	%46 = load i32* %45
	%47 = load %target.ModelT** @target_Target
	%48 = getelementptr %target.ModelT* %47, i32 0, i32 2
	%49 = load i8* %48
	%50 = zext i8 %49 to i32
	%51 = udiv i32 %46, %50
	store i32 %51, i32* %align
	%52 = load i8* %tok
	%53 = icmp eq i8 %52, 32
	br i1 %53, label %L.12, label %L.11
L.12:
	%54 = call i8 @lex_Next()
	store i8 %54, i8* %tok
	%55 = load %type.TypeNode** %t
	%56 = getelementptr %type.TypeNode* %55, i32 0, i32 25
	%57 = load i8* %56
	%58 = icmp ne i8 %57, 0
	%59 = xor i1 %58, true
	br i1 %59, label %L.14, label %L.13
L.14:
	call void @lex_Error(i8 81)
	br label %L.13
L.13:
	%60 = load %type.TypeNode** @type_wordtype
	%61 = call %ast.AstNode* @expr_Const(%type.TypeNode* %60)
	store %ast.AstNode* %61, %ast.AstNode** %temp
	%62 = load %type.TypeNode** @type_wordtype
	%63 = load %ast.AstNode** %temp
	%64 = load %type.TypeNode** @type_wordtype
	%65 = load %type.TypeNode** %t
	%66 = call i32 @expr_FindFlexSize(%type.TypeNode* %65)
	%67 = zext i32 %66 to i64
	%68 = call %ast.AstNode* @ast_Const(%type.TypeNode* %64, i64 %67)
	%69 = call %ast.AstNode* @ast_New2(i8 51, %type.TypeNode* %62, %ast.AstNode* %63, %ast.AstNode* %68)
	store %ast.AstNode* %69, %ast.AstNode** %temp
	%70 = load %type.TypeNode** @type_wordtype
	%71 = load %ast.AstNode** %size
	%72 = load %ast.AstNode** %temp
	%73 = call %ast.AstNode* @ast_New2(i8 49, %type.TypeNode* %70, %ast.AstNode* %71, %ast.AstNode* %72)
	store %ast.AstNode* %73, %ast.AstNode** %size
	%74 = call i8 @lex_Expect(i8 33)
	store i8 %74, i8* %tok
	br label %L.11
L.11:
	br label %L.4
L.3:
	%75 = load %ast.AstNode** %tree
	%76 = call %ast.AstNode* @expr_GetSize(%ast.AstNode* %75)
	store %ast.AstNode* %76, %ast.AstNode** %size
	%77 = load %ast.AstNode** %tree
	%78 = call i32 @expr_GetAlignment(%ast.AstNode* %77)
	store i32 %78, i32* %align
	br label %L.4
L.4:
	%79 = load %type.TypeNode** @type_unkntype
	%80 = load %ast.AstNode** %tree
	%81 = load %type.TypeNode** @type_bytetype
	%82 = call %ast.AstNode* @ast_Const(%type.TypeNode* %81, i64 0)
	%83 = load %ast.AstNode** %size
	%84 = call %ast.AstNode* @ast_New3(i8 21, %type.TypeNode* %79, %ast.AstNode* %80, %ast.AstNode* %82, %ast.AstNode* %83)
	store %ast.AstNode* %84, %ast.AstNode** %tree
	%85 = load %ast.AstNode** %tree
	%86 = load %type.TypeNode** @type_wordtype
	%87 = load i32* %align
	%88 = zext i32 %87 to i64
	%89 = call %ast.AstNode* @ast_Const(%type.TypeNode* %86, i64 %88)
	%90 = call %ast.AstNode* @ast_Child(%ast.AstNode* %85, %ast.AstNode* %89)
	store %ast.AstNode* %90, %ast.AstNode** %tree
	br label %L.1
L.1:
	%91 = load %ast.AstNode** %tree
	store %ast.AstNode* %91, %ast.AstNode** %rv.0
	br label %return
return:
	%92 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %92
}
define internal %ast.AstNode* @expr_IntrinsicUnary(i8 zeroext %op$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	store i8 %op$, i8* %op
	%tree = alloca %ast.AstNode*
	%0 = call %ast.AstNode* @expr_Bool(%type.TypeNode* null)
	store %ast.AstNode* %0, %ast.AstNode** %tree
	%1 = load i8* %op
	%2 = load %ast.AstNode** %tree
	%3 = call %ast.AstNode* @ast_OpUnary(i8 %1, %ast.AstNode* %2)
	store %ast.AstNode* %3, %ast.AstNode** %tree
	%4 = load %ast.AstNode** %tree
	store %ast.AstNode* %4, %ast.AstNode** %rv.0
	br label %return
return:
	%5 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %5
}
define internal %ast.AstNode* @expr_Convert() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tok = alloca i8
	%tree = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	%s = alloca %symb.SymbNode*
	%to = alloca i8
	%fm = alloca i8
	%op = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	store %type.TypeNode* null, %type.TypeNode** %t
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 41
	br i1 %2, label %L.2, label %L.3
L.2:
	%3 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%4 = call %symb.SymbNode* @symb_Find([0 x i8]* %3)
	store %symb.SymbNode* %4, %symb.SymbNode** %s
	%5 = load %symb.SymbNode** %s
	%6 = icmp ne %symb.SymbNode* %5, null
	br i1 %6, label %L.5, label %L.6
L.5:
	%7 = load %symb.SymbNode** %s
	%8 = getelementptr %symb.SymbNode* %7, i32 0, i32 13
	%9 = load i8* %8
	%10 = icmp eq i8 %9, 2
	br i1 %10, label %L.8, label %L.9
L.8:
	%11 = load %symb.SymbNode** %s
	%12 = getelementptr %symb.SymbNode* %11, i32 0, i32 1
	%13 = load %type.TypeNode** %12
	store %type.TypeNode* %13, %type.TypeNode** %t
	br label %L.7
L.9:
	call void @lex_Error(i8 26)
	br label %L.7
L.7:
	br label %L.4
L.6:
	%14 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorS(i8 19, [0 x i8]* %14)
	br label %L.4
L.4:
	%15 = call i8 @lex_Next()
	store i8 %15, i8* %tok
	%16 = load i8* %tok
	%17 = icmp eq i8 %16, 5
	br i1 %17, label %L.11, label %L.10
L.11:
	%18 = call i8 @lex_Next()
	store i8 %18, i8* %tok
	%19 = call %ast.AstNode* @expr_Bool(%type.TypeNode* null)
	store %ast.AstNode* %19, %ast.AstNode** %tree
	%20 = load %ast.AstNode** %tree
	%21 = icmp ne %ast.AstNode* %20, null
	br i1 %21, label %L.12, label %L.13
L.12:
	%22 = load %type.TypeNode** %t
	%23 = icmp ne %type.TypeNode* %22, null
	br label %L.13
L.13:
	%24 = phi i1 [ false, %L.11 ], [ %23, %L.12 ]
	br i1 %24, label %L.15, label %L.14
L.15:
	%25 = load %type.TypeNode** %t
	%26 = getelementptr %type.TypeNode* %25, i32 0, i32 14
	%27 = load i8* %26
	store i8 %27, i8* %to
	%28 = load %ast.AstNode** %tree
	%29 = getelementptr %ast.AstNode* %28, i32 0, i32 8
	%30 = load %type.TypeNode** %29
	%31 = getelementptr %type.TypeNode* %30, i32 0, i32 14
	%32 = load i8* %31
	store i8 %32, i8* %fm
	store i8 0, i8* %op
	%33 = load i8* %to
	%34 = zext i8 %33 to i32
	switch i32 %34, label %L.16 [
		i32 4, label %L.18
		i32 2, label %L.19
		i32 3, label %L.20
	]
L.18:
	%35 = load i8* %fm
	%36 = zext i8 %35 to i32
	switch i32 %36, label %L.21 [
		i32 2, label %L.23
		i32 3, label %L.24
	]
L.23:
	store i8 39, i8* %op
	br label %L.22
L.24:
	store i8 40, i8* %op
	br label %L.22
L.21:
	br label %L.22
L.22:
	br label %L.17
L.19:
	%37 = load i8* %fm
	%38 = icmp eq i8 %37, 4
	br i1 %38, label %L.26, label %L.25
L.26:
	store i8 41, i8* %op
	br label %L.25
L.25:
	br label %L.17
L.20:
	%39 = load i8* %fm
	%40 = icmp eq i8 %39, 4
	br i1 %40, label %L.28, label %L.27
L.28:
	store i8 42, i8* %op
	br label %L.27
L.27:
	br label %L.17
L.16:
	br label %L.17
L.17:
	%41 = load i8* %op
	%42 = icmp ne i8 %41, 0
	br i1 %42, label %L.30, label %L.29
L.30:
	%43 = load i8* %op
	%44 = load %type.TypeNode** %t
	%45 = load %ast.AstNode** %tree
	%46 = call %ast.AstNode* @ast_New1(i8 %43, %type.TypeNode* %44, %ast.AstNode* %45)
	store %ast.AstNode* %46, %ast.AstNode** %tree
	%47 = load %type.TypeNode** %t
	%48 = getelementptr %type.TypeNode* %47, i32 0, i32 10
	%49 = load i32* %48
	%50 = load %ast.AstNode** %tree
	%51 = getelementptr %ast.AstNode* %50, i32 0, i32 7
	store i32 %49, i32* %51
	br label %L.29
L.29:
	br label %L.14
L.14:
	br label %L.10
L.10:
	br label %L.1
L.3:
	call void @lex_Error(i8 26)
	br label %L.1
L.1:
	%52 = load %ast.AstNode** %tree
	store %ast.AstNode* %52, %ast.AstNode** %rv.0
	br label %return
return:
	%53 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %53
}
@S.581 = internal constant [18 x i8] c"Intrinsic unknown\00"
define internal %ast.AstNode* @expr_Intrinsic(%symb.SymbNode* %ps$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%ps = alloca %symb.SymbNode*
	store %symb.SymbNode* %ps$, %symb.SymbNode** %ps
	%tree = alloca %ast.AstNode*
	%lhs = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	%tok = alloca i8
	%which = alloca i8
	%op = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 32
	br i1 %2, label %L.2, label %L.3
L.2:
	%3 = call i8 @lex_Next()
	store i8 %3, i8* %tok
	%4 = load %symb.SymbNode** %ps
	%5 = getelementptr %symb.SymbNode* %4, i32 0, i32 10
	%6 = load i16* %5
	%7 = trunc i16 %6 to i8
	store i8 %7, i8* %which
	%8 = load i8* %which
	%9 = zext i8 %8 to i32
	switch i32 %9, label %L.4 [
		i32 1, label %L.6
		i32 2, label %L.7
		i32 3, label %L.8
		i32 4, label %L.8
		i32 14, label %L.9
		i32 5, label %L.10
		i32 6, label %L.11
		i32 7, label %L.12
		i32 8, label %L.13
		i32 9, label %L.14
		i32 10, label %L.15
		i32 13, label %L.16
		i32 11, label %L.17
		i32 12, label %L.18
	]
L.6:
	%10 = load i8* %tok
	%11 = icmp eq i8 %10, 41
	br i1 %11, label %L.20, label %L.21
L.20:
	%12 = load %type.TypeNode** @type_booltype
	%13 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%14 = call i8 @symb_IsDefined([0 x i8]* %13)
	%15 = zext i8 %14 to i32
	%16 = zext i32 %15 to i64
	%17 = call %ast.AstNode* @ast_Const(%type.TypeNode* %12, i64 %16)
	store %ast.AstNode* %17, %ast.AstNode** %tree
	br label %L.19
L.21:
	call void @lex_Error(i8 18)
	br label %L.19
L.19:
	br label %L.5
L.7:
	%18 = call %ast.AstNode* @expr_IntrinsicUnary(i8 35)
	store %ast.AstNode* %18, %ast.AstNode** %tree
	%19 = load %ast.AstNode** %tree
	%20 = icmp ne %ast.AstNode* %19, null
	br i1 %20, label %L.22, label %L.23
L.22:
	%21 = load %ast.AstNode** %tree
	%22 = getelementptr %ast.AstNode* %21, i32 0, i32 8
	%23 = load %type.TypeNode** %22
	%24 = getelementptr %type.TypeNode* %23, i32 0, i32 14
	%25 = load i8* %24
	%26 = icmp eq i8 %25, 3
	br label %L.23
L.23:
	%27 = phi i1 [ false, %L.7 ], [ %26, %L.22 ]
	br i1 %27, label %L.25, label %L.24
L.25:
	%28 = load %ast.AstNode** %tree
	%29 = getelementptr %ast.AstNode* %28, i32 0, i32 7
	%30 = load i32* %29
	%31 = call %type.TypeNode* @target_utype(i32 %30)
	%32 = load %ast.AstNode** %tree
	%33 = getelementptr %ast.AstNode* %32, i32 0, i32 8
	store %type.TypeNode* %31, %type.TypeNode** %33
	br label %L.24
L.24:
	br label %L.5
L.8:
	%34 = call %ast.AstNode* @expr_Bool(%type.TypeNode* null)
	store %ast.AstNode* %34, %ast.AstNode** %lhs
	%35 = call i8 @lex_Expect(i8 5)
	%36 = call %ast.AstNode* @expr_Bool(%type.TypeNode* null)
	store %ast.AstNode* %36, %ast.AstNode** %rhs
	%37 = load %ast.AstNode** %lhs
	%38 = icmp ne %ast.AstNode* %37, null
	br i1 %38, label %L.26, label %L.27
L.26:
	%39 = load %ast.AstNode** %rhs
	%40 = icmp ne %ast.AstNode* %39, null
	br label %L.27
L.27:
	%41 = phi i1 [ false, %L.8 ], [ %40, %L.26 ]
	br i1 %41, label %L.29, label %L.28
L.29:
	%42 = load %ast.AstNode** %lhs
	%43 = load %ast.AstNode** %rhs
	%44 = call i8 @expr_IsSignedBinOp(%ast.AstNode* %42, %ast.AstNode* %43)
	%45 = icmp ne i8 %44, 0
	br i1 %45, label %L.31, label %L.32
L.31:
	%46 = load i8* %which
	%47 = icmp eq i8 %46, 3
	br i1 %47, label %L.34, label %L.35
L.34:
	store i8 66, i8* %op
	br label %L.33
L.35:
	store i8 67, i8* %op
	br label %L.33
L.33:
	br label %L.30
L.32:
	%48 = load i8* %which
	%49 = icmp eq i8 %48, 3
	br i1 %49, label %L.37, label %L.38
L.37:
	store i8 64, i8* %op
	br label %L.36
L.38:
	store i8 65, i8* %op
	br label %L.36
L.36:
	br label %L.30
L.30:
	%50 = load i8* %op
	%51 = load %ast.AstNode** %lhs
	%52 = load %ast.AstNode** %rhs
	%53 = call %ast.AstNode* @ast_OpMinMax(i8 %50, %ast.AstNode* %51, %ast.AstNode* %52)
	store %ast.AstNode* %53, %ast.AstNode** %tree
	br label %L.28
L.28:
	br label %L.5
L.9:
	%align = alloca i32
	%54 = call %ast.AstNode* @expr_GetLHS()
	store %ast.AstNode* %54, %ast.AstNode** %lhs
	%55 = load %ast.AstNode** %lhs
	%56 = getelementptr %ast.AstNode* %55, i32 0, i32 0
	%57 = load i8* %56
	%58 = icmp eq i8 %57, 27
	br i1 %58, label %L.39, label %L.40
L.39:
	%59 = load %ast.AstNode** %lhs
	%60 = getelementptr %ast.AstNode* %59, i32 0, i32 8
	%61 = load %type.TypeNode** %60
	%62 = getelementptr %type.TypeNode* %61, i32 0, i32 14
	%63 = load i8* %62
	%64 = icmp eq i8 %63, 6
	br label %L.40
L.40:
	%65 = phi i1 [ false, %L.9 ], [ %64, %L.39 ]
	br i1 %65, label %L.42, label %L.41
L.42:
	%66 = load %ast.AstNode** %lhs
	%67 = getelementptr %ast.AstNode* %66, i32 0, i32 11
	%68 = getelementptr [0 x %ast.AstNode*]* %67, i32 0, i32 0
	%69 = load %ast.AstNode** %68
	%70 = bitcast %ast.AstNode* %69 to %ast.AstNode*
	store %ast.AstNode* %70, %ast.AstNode** %lhs
	br label %L.41
L.41:
	%71 = load %ast.AstNode** %lhs
	%72 = getelementptr %ast.AstNode* %71, i32 0, i32 8
	%73 = load %type.TypeNode** %72
	%74 = getelementptr %type.TypeNode* %73, i32 0, i32 14
	%75 = load i8* %74
	%76 = icmp ne i8 %75, 5
	br i1 %76, label %L.48, label %L.47
L.47:
	%77 = load %ast.AstNode** %lhs
	%78 = getelementptr %ast.AstNode* %77, i32 0, i32 8
	%79 = load %type.TypeNode** %78
	%80 = getelementptr %type.TypeNode* %79, i32 0, i32 0
	%81 = load %type.TypeNode** %80
	%82 = getelementptr %type.TypeNode* %81, i32 0, i32 14
	%83 = load i8* %82
	%84 = icmp ne i8 %83, 6
	br label %L.48
L.48:
	%85 = phi i1 [ true, %L.41 ], [ %84, %L.47 ]
	br i1 %85, label %L.46, label %L.45
L.45:
	%86 = load %ast.AstNode** %lhs
	%87 = getelementptr %ast.AstNode* %86, i32 0, i32 8
	%88 = load %type.TypeNode** %87
	%89 = getelementptr %type.TypeNode* %88, i32 0, i32 0
	%90 = load %type.TypeNode** %89
	%91 = getelementptr %type.TypeNode* %90, i32 0, i32 0
	%92 = load %type.TypeNode** %91
	%93 = getelementptr %type.TypeNode* %92, i32 0, i32 14
	%94 = load i8* %93
	%95 = icmp ne i8 %94, 2
	br label %L.46
L.46:
	%96 = phi i1 [ true, %L.48 ], [ %95, %L.45 ]
	br i1 %96, label %L.44, label %L.43
L.43:
	%97 = load %ast.AstNode** %lhs
	%98 = getelementptr %ast.AstNode* %97, i32 0, i32 8
	%99 = load %type.TypeNode** %98
	%100 = getelementptr %type.TypeNode* %99, i32 0, i32 0
	%101 = load %type.TypeNode** %100
	%102 = getelementptr %type.TypeNode* %101, i32 0, i32 0
	%103 = load %type.TypeNode** %102
	%104 = getelementptr %type.TypeNode* %103, i32 0, i32 10
	%105 = load i32* %104
	%106 = load %target.ModelT** @target_Target
	%107 = getelementptr %target.ModelT* %106, i32 0, i32 2
	%108 = load i8* %107
	%109 = zext i8 %108 to i32
	%110 = icmp ne i32 %105, %109
	br label %L.44
L.44:
	%111 = phi i1 [ true, %L.46 ], [ %110, %L.43 ]
	br i1 %111, label %L.50, label %L.49
L.50:
	call void @lex_Error(i8 30)
	br label %L.49
L.49:
	%112 = load %ast.AstNode** %lhs
	%113 = call i32 @expr_GetAlignment(%ast.AstNode* %112)
	store i32 %113, i32* %align
	%114 = load %type.TypeNode** @type_wordtype
	%115 = load %ast.AstNode** %lhs
	%116 = load %type.TypeNode** @type_wordtype
	%117 = load i32* %align
	%118 = zext i32 %117 to i64
	%119 = call %ast.AstNode* @ast_Const(%type.TypeNode* %116, i64 %118)
	%120 = call %ast.AstNode* @ast_New2(i8 48, %type.TypeNode* %114, %ast.AstNode* %115, %ast.AstNode* %119)
	store %ast.AstNode* %120, %ast.AstNode** %tree
	%121 = load %type.TypeNode** @type_wordtype
	%122 = getelementptr %type.TypeNode* %121, i32 0, i32 10
	%123 = load i32* %122
	%124 = load %ast.AstNode** %tree
	%125 = getelementptr %ast.AstNode* %124, i32 0, i32 7
	store i32 %123, i32* %125
	br label %L.5
L.10:
	%126 = call %ast.AstNode* @expr_IntrinsicUnary(i8 43)
	store %ast.AstNode* %126, %ast.AstNode** %tree
	br label %L.5
L.11:
	%127 = call %ast.AstNode* @expr_IntrinsicUnary(i8 44)
	store %ast.AstNode* %127, %ast.AstNode** %tree
	br label %L.5
L.12:
	%128 = call %ast.AstNode* @expr_IntrinsicUnary(i8 45)
	store %ast.AstNode* %128, %ast.AstNode** %tree
	br label %L.5
L.13:
	%129 = call %ast.AstNode* @expr_IntrinsicUnary(i8 46)
	store %ast.AstNode* %129, %ast.AstNode** %tree
	br label %L.5
L.14:
	%130 = call %ast.AstNode* @expr_IntrinsicUnary(i8 47)
	store %ast.AstNode* %130, %ast.AstNode** %tree
	br label %L.5
L.15:
	%131 = call %ast.AstNode* @expr_Convert()
	store %ast.AstNode* %131, %ast.AstNode** %tree
	br label %L.5
L.16:
	%132 = call %ast.AstNode* @expr_Zero()
	store %ast.AstNode* %132, %ast.AstNode** %tree
	br label %L.5
L.17:
	%133 = call %ast.AstNode* @expr_New()
	store %ast.AstNode* %133, %ast.AstNode** %tree
	br label %L.5
L.18:
	%134 = call %ast.AstNode* @expr_Delete()
	store %ast.AstNode* %134, %ast.AstNode** %tree
	br label %L.5
L.4:
	%135 = getelementptr [18 x i8]* @S.581
	%136 = bitcast [18 x i8]* %135 to [0 x i8]*
	call void @lex_ErrorS(i8 86, [0 x i8]* %136)
	br label %L.5
L.5:
	%137 = call i8 @lex_Expect(i8 33)
	store i8 %137, i8* %tok
	br label %L.1
L.3:
	call void @lex_ErrorT(i8 17, i8 32)
	br label %L.1
L.1:
	%138 = load %ast.AstNode** %tree
	store %ast.AstNode* %138, %ast.AstNode** %rv.0
	br label %return
return:
	%139 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %139
}
define internal %ast.AstNode* @expr_Call(%symb.SymbNode* %ps$, %ast.AstNode* %tree$, %ast.AstNode* %arg$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%ps = alloca %symb.SymbNode*
	%tree = alloca %ast.AstNode*
	%arg = alloca %ast.AstNode*
	store %symb.SymbNode* %ps$, %symb.SymbNode** %ps
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	store %ast.AstNode* %arg$, %ast.AstNode** %arg
	%t = alloca %type.TypeNode*
	%s = alloca %symb.SymbNode*
	%tok = alloca i8
	%0 = load %symb.SymbNode** %ps
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 1
	%2 = load %type.TypeNode** %1
	store %type.TypeNode* %2, %type.TypeNode** %t
	%3 = load %ast.AstNode** %tree
	%4 = icmp eq %ast.AstNode* %3, null
	br i1 %4, label %L.2, label %L.3
L.2:
	%5 = load %type.TypeNode** %t
	%6 = call %ast.AstNode* @ast_New(i8 18, %type.TypeNode* %5)
	store %ast.AstNode* %6, %ast.AstNode** %tree
	br label %L.1
L.3:
	%7 = load %type.TypeNode** %t
	%8 = load %ast.AstNode** %tree
	%9 = call %ast.AstNode* @ast_New1(i8 19, %type.TypeNode* %7, %ast.AstNode* %8)
	store %ast.AstNode* %9, %ast.AstNode** %tree
	br label %L.1
L.1:
	%10 = load %symb.SymbNode** %ps
	%11 = load %ast.AstNode** %tree
	%12 = getelementptr %ast.AstNode* %11, i32 0, i32 9
	store %symb.SymbNode* %10, %symb.SymbNode** %12
	%13 = load %type.TypeNode** %t
	%14 = icmp ne %type.TypeNode* %13, null
	br i1 %14, label %L.5, label %L.6
L.5:
	%15 = load %type.TypeNode** %t
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 10
	%17 = load i32* %16
	%18 = load %ast.AstNode** %tree
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 7
	store i32 %17, i32* %19
	br label %L.4
L.6:
	%20 = load %type.TypeNode** @type_unkntype
	%21 = load %ast.AstNode** %tree
	%22 = getelementptr %ast.AstNode* %21, i32 0, i32 8
	store %type.TypeNode* %20, %type.TypeNode** %22
	br label %L.4
L.4:
	%23 = load %symb.SymbNode** %ps
	%24 = getelementptr %symb.SymbNode* %23, i32 0, i32 3
	%25 = load %symb.SymbNode** %24
	%26 = bitcast %symb.SymbNode* %25 to %symb.SymbNode*
	store %symb.SymbNode* %26, %symb.SymbNode** %s
	%27 = load %ast.AstNode** %arg
	%28 = icmp ne %ast.AstNode* %27, null
	br i1 %28, label %L.8, label %L.7
L.8:
	%29 = load %ast.AstNode** %arg
	%30 = call %ast.AstNode* @expr_Load(%ast.AstNode* %29)
	store %ast.AstNode* %30, %ast.AstNode** %arg
	%31 = load %ast.AstNode** %arg
	%32 = load %symb.SymbNode** %s
	%33 = getelementptr %symb.SymbNode* %32, i32 0, i32 1
	%34 = load %type.TypeNode** %33
	%35 = call %ast.AstNode* @expr_Adjust(%ast.AstNode* %31, %type.TypeNode* %34)
	store %ast.AstNode* %35, %ast.AstNode** %arg
	%36 = load %ast.AstNode** %tree
	%37 = load %ast.AstNode** %arg
	%38 = call %ast.AstNode* @ast_Child(%ast.AstNode* %36, %ast.AstNode* %37)
	store %ast.AstNode* %38, %ast.AstNode** %tree
	%39 = load %symb.SymbNode** %s
	%40 = getelementptr %symb.SymbNode* %39, i32 0, i32 0
	%41 = load %symb.SymbNode** %40
	%42 = bitcast %symb.SymbNode* %41 to %symb.SymbNode*
	store %symb.SymbNode* %42, %symb.SymbNode** %s
	br label %L.7
L.7:
	%43 = load i8* @lex_Token
	store i8 %43, i8* %tok
	%44 = load i8* %tok
	%45 = icmp eq i8 %44, 32
	br i1 %45, label %L.10, label %L.11
L.10:
	%46 = call i8 @lex_Next()
	store i8 %46, i8* %tok
	%47 = load i8* %tok
	%48 = icmp ne i8 %47, 33
	br i1 %48, label %L.13, label %L.12
L.13:
	br label %L.14
L.14:
	%49 = load %symb.SymbNode** %s
	%50 = icmp eq %symb.SymbNode* %49, null
	br i1 %50, label %L.17, label %L.16
L.17:
	call void @lex_Error(i8 68)
	%51 = bitcast [4 x i8]* @expr_skiplist to [0 x i8]*
	%52 = call i8 @lex_Skip([0 x i8]* %51)
	store i8 %52, i8* %tok
	br label %L.15
L.16:
	%53 = load %symb.SymbNode** %s
	%54 = getelementptr %symb.SymbNode* %53, i32 0, i32 1
	%55 = load %type.TypeNode** %54
	%56 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %55)
	store %ast.AstNode* %56, %ast.AstNode** %arg
	%57 = load %ast.AstNode** %arg
	%58 = icmp ne %ast.AstNode* %57, null
	br i1 %58, label %L.19, label %L.18
L.19:
	%59 = load %ast.AstNode** %arg
	%60 = load %symb.SymbNode** %s
	%61 = getelementptr %symb.SymbNode* %60, i32 0, i32 1
	%62 = load %type.TypeNode** %61
	%63 = call %ast.AstNode* @expr_Adjust(%ast.AstNode* %59, %type.TypeNode* %62)
	store %ast.AstNode* %63, %ast.AstNode** %arg
	br label %L.18
L.18:
	%64 = load %ast.AstNode** %tree
	%65 = load %ast.AstNode** %arg
	%66 = call %ast.AstNode* @ast_Child(%ast.AstNode* %64, %ast.AstNode* %65)
	store %ast.AstNode* %66, %ast.AstNode** %tree
	%67 = load %symb.SymbNode** %s
	%68 = getelementptr %symb.SymbNode* %67, i32 0, i32 0
	%69 = load %symb.SymbNode** %68
	%70 = bitcast %symb.SymbNode* %69 to %symb.SymbNode*
	store %symb.SymbNode* %70, %symb.SymbNode** %s
	%71 = load i8* @lex_Token
	store i8 %71, i8* %tok
	%72 = load i8* %tok
	%73 = icmp ne i8 %72, 5
	br i1 %73, label %L.15, label %L.20
L.20:
	%74 = call i8 @lex_Next()
	store i8 %74, i8* %tok
	br label %L.14
L.15:
	br label %L.12
L.12:
	%75 = call i8 @lex_Expect(i8 33)
	store i8 %75, i8* %tok
	br label %L.9
L.11:
	call void @lex_ErrorT(i8 17, i8 32)
	br label %L.9
L.9:
	%76 = load %symb.SymbNode** %s
	%77 = icmp ne %symb.SymbNode* %76, null
	br i1 %77, label %L.21, label %L.22
L.21:
	%78 = load %symb.SymbNode** %s
	%79 = getelementptr %symb.SymbNode* %78, i32 0, i32 14
	%80 = load i8* %79
	%81 = icmp eq i8 %80, 0
	br label %L.22
L.22:
	%82 = phi i1 [ false, %L.9 ], [ %81, %L.21 ]
	br i1 %82, label %L.24, label %L.23
L.24:
	call void @lex_Error(i8 67)
	br label %L.23
L.23:
	%83 = load %ast.AstNode** %tree
	store %ast.AstNode* %83, %ast.AstNode** %rv.0
	br label %return
return:
	%84 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %84
}
define internal %ast.AstNode* @expr_RefProc(%symb.SymbNode* %s$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%s = alloca %symb.SymbNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%t = alloca %type.TypeNode*
	%tree = alloca %ast.AstNode*
	%0 = call %type.TypeNode* @type_New(i8 8)
	store %type.TypeNode* %0, %type.TypeNode** %t
	%1 = load %symb.SymbNode** %s
	%2 = bitcast %symb.SymbNode* %1 to %symb.SymbNode*
	%3 = load %type.TypeNode** %t
	%4 = getelementptr %type.TypeNode* %3, i32 0, i32 4
	store %symb.SymbNode* %2, %symb.SymbNode** %4
	%5 = load %type.TypeNode** %t
	%6 = call %ast.AstNode* @ast_New(i8 12, %type.TypeNode* %5)
	store %ast.AstNode* %6, %ast.AstNode** %tree
	%7 = load %symb.SymbNode** %s
	%8 = load %ast.AstNode** %tree
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 9
	store %symb.SymbNode* %7, %symb.SymbNode** %9
	%10 = load %ast.AstNode** %tree
	store %ast.AstNode* %10, %ast.AstNode** %rv.0
	br label %return
return:
	%11 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %11
}
define internal %ast.AstNode* @expr_Atom(%symb.SymbNode* %s$, %type.TypeNode* %et$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%s = alloca %symb.SymbNode*
	%et = alloca %type.TypeNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store %type.TypeNode* %et$, %type.TypeNode** %et
	%tree = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load %symb.SymbNode** %s
	%1 = icmp ne %symb.SymbNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load %symb.SymbNode** %s
	%3 = getelementptr %symb.SymbNode* %2, i32 0, i32 1
	%4 = load %type.TypeNode** %3
	store %type.TypeNode* %4, %type.TypeNode** %t
	%5 = load %symb.SymbNode** %s
	%6 = getelementptr %symb.SymbNode* %5, i32 0, i32 13
	%7 = load i8* %6
	%8 = zext i8 %7 to i32
	switch i32 %8, label %L.3 [
		i32 3, label %L.5
		i32 1, label %L.6
		i32 5, label %L.7
		i32 2, label %L.8
	]
L.5:
	%9 = load %type.TypeNode** %t
	%10 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %9)
	%11 = call %ast.AstNode* @ast_New(i8 12, %type.TypeNode* %10)
	store %ast.AstNode* %11, %ast.AstNode** %tree
	%12 = load %symb.SymbNode** %s
	%13 = load %ast.AstNode** %tree
	%14 = getelementptr %ast.AstNode* %13, i32 0, i32 9
	store %symb.SymbNode* %12, %symb.SymbNode** %14
	%15 = load %type.TypeNode** %t
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 10
	%17 = load i32* %16
	%18 = load %ast.AstNode** %tree
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 7
	store i32 %17, i32* %19
	br label %L.4
L.6:
	%20 = load %type.TypeNode** %t
	%21 = getelementptr %type.TypeNode* %20, i32 0, i32 14
	%22 = load i8* %21
	%23 = icmp ule i8 %22, 5
	br i1 %23, label %L.10, label %L.9
L.9:
	%24 = load %type.TypeNode** %t
	%25 = getelementptr %type.TypeNode* %24, i32 0, i32 21
	%26 = load i8* %25
	%27 = icmp ne i8 %26, 0
	br label %L.10
L.10:
	%28 = phi i1 [ true, %L.6 ], [ %27, %L.9 ]
	br i1 %28, label %L.12, label %L.13
L.12:
	%29 = load %symb.SymbNode** %s
	%30 = getelementptr %symb.SymbNode* %29, i32 0, i32 8
	%31 = load %ast.AstNode** %30
	%32 = bitcast %ast.AstNode* %31 to %ast.AstNode*
	%33 = call %ast.AstNode* @ast_Dup(%ast.AstNode* %32)
	store %ast.AstNode* %33, %ast.AstNode** %tree
	br label %L.11
L.13:
	%34 = load %type.TypeNode** %t
	%35 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %34)
	%36 = call %ast.AstNode* @ast_New(i8 12, %type.TypeNode* %35)
	store %ast.AstNode* %36, %ast.AstNode** %tree
	%37 = load %symb.SymbNode** %s
	%38 = load %ast.AstNode** %tree
	%39 = getelementptr %ast.AstNode* %38, i32 0, i32 9
	store %symb.SymbNode* %37, %symb.SymbNode** %39
	%40 = load %type.TypeNode** %t
	%41 = getelementptr %type.TypeNode* %40, i32 0, i32 10
	%42 = load i32* %41
	%43 = load %ast.AstNode** %tree
	%44 = getelementptr %ast.AstNode* %43, i32 0, i32 7
	store i32 %42, i32* %44
	br label %L.11
L.11:
	br label %L.4
L.7:
	%45 = load %symb.SymbNode** %s
	%46 = getelementptr %symb.SymbNode* %45, i32 0, i32 10
	%47 = load i16* %46
	%48 = icmp ne i16 %47, 0
	br i1 %48, label %L.15, label %L.16
L.15:
	%49 = load %symb.SymbNode** %s
	%50 = call %ast.AstNode* @expr_Intrinsic(%symb.SymbNode* %49)
	store %ast.AstNode* %50, %ast.AstNode** %tree
	br label %L.14
L.16:
	%51 = load %type.TypeNode** %et
	%52 = icmp ne %type.TypeNode* %51, null
	br i1 %52, label %L.17, label %L.18
L.17:
	%53 = load %type.TypeNode** %et
	%54 = getelementptr %type.TypeNode* %53, i32 0, i32 14
	%55 = load i8* %54
	%56 = icmp eq i8 %55, 8
	br label %L.18
L.18:
	%57 = phi i1 [ false, %L.16 ], [ %56, %L.17 ]
	br i1 %57, label %L.20, label %L.21
L.20:
	%58 = load %symb.SymbNode** %s
	%59 = call %ast.AstNode* @expr_RefProc(%symb.SymbNode* %58)
	store %ast.AstNode* %59, %ast.AstNode** %tree
	br label %L.19
L.21:
	%60 = load %symb.SymbNode** %s
	%61 = call %ast.AstNode* @expr_Call(%symb.SymbNode* %60, %ast.AstNode* null, %ast.AstNode* null)
	store %ast.AstNode* %61, %ast.AstNode** %tree
	br label %L.19
L.19:
	br label %L.14
L.14:
	br label %L.4
L.8:
	%62 = load %type.TypeNode** %t
	%63 = call %ast.AstNode* @ast_New(i8 2, %type.TypeNode* %62)
	store %ast.AstNode* %63, %ast.AstNode** %tree
	%64 = load %symb.SymbNode** %s
	%65 = load %ast.AstNode** %tree
	%66 = getelementptr %ast.AstNode* %65, i32 0, i32 9
	store %symb.SymbNode* %64, %symb.SymbNode** %66
	br label %L.4
L.3:
	%67 = load %symb.SymbNode** %s
	%68 = getelementptr %symb.SymbNode* %67, i32 0, i32 22
	%69 = getelementptr [0 x i8]* %68
	%70 = bitcast [0 x i8]* %69 to [0 x i8]*
	call void @lex_ErrorI(i8 22, [0 x i8]* %70)
	br label %L.4
L.4:
	br label %L.1
L.1:
	%71 = load %ast.AstNode** %tree
	store %ast.AstNode* %71, %ast.AstNode** %rv.0
	br label %return
return:
	%72 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %72
}
define internal %ast.AstNode* @expr_Primary(%symb.SymbNode* %s$, %type.TypeNode* %et$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%s = alloca %symb.SymbNode*
	%et = alloca %type.TypeNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store %type.TypeNode* %et$, %type.TypeNode** %et
	%tree = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	%bt = alloca %type.TypeNode*
	%tok = alloca i8
	%done = alloca i8
	%0 = load %symb.SymbNode** %s
	%1 = icmp ne %symb.SymbNode* %0, null
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load %symb.SymbNode** %s
	%3 = load %type.TypeNode** %et
	%4 = call %ast.AstNode* @expr_Atom(%symb.SymbNode* %2, %type.TypeNode* %3)
	store %ast.AstNode* %4, %ast.AstNode** %tree
	br label %L.1
L.3:
	%5 = load %type.TypeNode** %et
	%6 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %5)
	%7 = call %ast.AstNode* @ast_New(i8 12, %type.TypeNode* %6)
	store %ast.AstNode* %7, %ast.AstNode** %tree
	%8 = load %ast.AstNode** %tree
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 9
	store %symb.SymbNode* null, %symb.SymbNode** %9
	%10 = load %type.TypeNode** %et
	%11 = getelementptr %type.TypeNode* %10, i32 0, i32 10
	%12 = load i32* %11
	%13 = load %ast.AstNode** %tree
	%14 = getelementptr %ast.AstNode* %13, i32 0, i32 7
	store i32 %12, i32* %14
	br label %L.1
L.1:
	%15 = load i8* @lex_Token
	store i8 %15, i8* %tok
	store i8 0, i8* %done
	br label %L.4
L.4:
	%16 = load i8* %done
	%17 = icmp ne i8 %16, 0
	%18 = xor i1 %17, true
	br i1 %18, label %L.9, label %L.10
L.9:
	%19 = load %ast.AstNode** %tree
	%20 = icmp ne %ast.AstNode* %19, null
	br label %L.10
L.10:
	%21 = phi i1 [ false, %L.4 ], [ %20, %L.9 ]
	br i1 %21, label %L.7, label %L.8
L.7:
	%22 = load %ast.AstNode** %tree
	%23 = getelementptr %ast.AstNode* %22, i32 0, i32 8
	%24 = load %type.TypeNode** %23
	%25 = icmp ne %type.TypeNode* %24, null
	br label %L.8
L.8:
	%26 = phi i1 [ false, %L.10 ], [ %25, %L.7 ]
	%27 = xor i1 %26, true
	br i1 %27, label %L.5, label %L.6
L.6:
	%28 = load %ast.AstNode** %tree
	%29 = getelementptr %ast.AstNode* %28, i32 0, i32 8
	%30 = load %type.TypeNode** %29
	store %type.TypeNode* %30, %type.TypeNode** %t
	%31 = load i8* %tok
	%32 = zext i8 %31 to i32
	switch i32 %32, label %L.11 [
		i32 2, label %L.13
		i32 7, label %L.14
		i32 34, label %L.15
	]
L.13:
	%33 = call i8 @lex_Next()
	store i8 %33, i8* %tok
	%34 = load %ast.AstNode** %tree
	%35 = getelementptr %ast.AstNode* %34, i32 0, i32 0
	%36 = load i8* %35
	%37 = icmp eq i8 %36, 2
	br i1 %37, label %L.17, label %L.18
L.17:
	%38 = load %type.TypeNode** %t
	%39 = getelementptr %type.TypeNode* %38, i32 0, i32 14
	%40 = load i8* %39
	%41 = icmp eq i8 %40, 1
	br i1 %41, label %L.20, label %L.21
L.20:
	%42 = load %type.TypeNode** %t
	%43 = call %ast.AstNode* @expr_EnumConst(%type.TypeNode* %42)
	store %ast.AstNode* %43, %ast.AstNode** %tree
	%44 = call i8 @lex_Next()
	store i8 %44, i8* %tok
	br label %L.19
L.21:
	%45 = load %symb.SymbNode** %s
	%46 = getelementptr %symb.SymbNode* %45, i32 0, i32 22
	%47 = getelementptr [0 x i8]* %46
	%48 = bitcast [0 x i8]* %47 to [0 x i8]*
	call void @lex_ErrorI(i8 29, [0 x i8]* %48)
	br label %L.19
L.19:
	br label %L.16
L.18:
	%49 = load i8* %tok
	%50 = icmp eq i8 %49, 41
	br i1 %50, label %L.23, label %L.24
L.23:
	store %symb.SymbNode* null, %symb.SymbNode** %s
	%51 = load %type.TypeNode** %t
	store %type.TypeNode* %51, %type.TypeNode** %bt
	%52 = load %type.TypeNode** %t
	%53 = getelementptr %type.TypeNode* %52, i32 0, i32 14
	%54 = load i8* %53
	%55 = icmp eq i8 %54, 5
	br i1 %55, label %L.26, label %L.25
L.26:
	%56 = load %type.TypeNode** %t
	%57 = getelementptr %type.TypeNode* %56, i32 0, i32 0
	%58 = load %type.TypeNode** %57
	%59 = bitcast %type.TypeNode* %58 to %type.TypeNode*
	store %type.TypeNode* %59, %type.TypeNode** %bt
	br label %L.25
L.25:
	%60 = load %type.TypeNode** %bt
	%61 = icmp ne %type.TypeNode* %60, null
	br i1 %61, label %L.28, label %L.27
L.28:
	br label %L.29
L.29:
	%62 = load %type.TypeNode** %bt
	%63 = getelementptr %type.TypeNode* %62, i32 0, i32 5
	%64 = load %symb.SymbNode** %63
	%65 = bitcast %symb.SymbNode* %64 to %symb.SymbNode*
	%66 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%67 = call %symb.SymbNode* @symb_FindMethod(%symb.SymbNode* %65, [0 x i8]* %66)
	store %symb.SymbNode* %67, %symb.SymbNode** %s
	%68 = load %symb.SymbNode** %s
	%69 = icmp ne %symb.SymbNode* %68, null
	br i1 %69, label %L.33, label %L.32
L.32:
	%70 = load %type.TypeNode** %bt
	%71 = getelementptr %type.TypeNode* %70, i32 0, i32 0
	%72 = load %type.TypeNode** %71
	%73 = icmp eq %type.TypeNode* %72, null
	br label %L.33
L.33:
	%74 = phi i1 [ true, %L.29 ], [ %73, %L.32 ]
	br i1 %74, label %L.30, label %L.31
L.31:
	%75 = load %type.TypeNode** %bt
	%76 = getelementptr %type.TypeNode* %75, i32 0, i32 0
	%77 = load %type.TypeNode** %76
	%78 = bitcast %type.TypeNode* %77 to %type.TypeNode*
	store %type.TypeNode* %78, %type.TypeNode** %bt
	br label %L.29
L.30:
	br label %L.27
L.27:
	%79 = load %symb.SymbNode** %s
	%80 = icmp ne %symb.SymbNode* %79, null
	br i1 %80, label %L.35, label %L.36
L.35:
	%81 = call i8 @lex_Next()
	store i8 %81, i8* %tok
	%82 = load %type.TypeNode** %et
	%83 = icmp ne %type.TypeNode* %82, null
	br i1 %83, label %L.37, label %L.38
L.37:
	%84 = load %type.TypeNode** %et
	%85 = getelementptr %type.TypeNode* %84, i32 0, i32 14
	%86 = load i8* %85
	%87 = icmp eq i8 %86, 8
	br label %L.38
L.38:
	%88 = phi i1 [ false, %L.35 ], [ %87, %L.37 ]
	br i1 %88, label %L.40, label %L.41
L.40:
	%89 = load %symb.SymbNode** %s
	%90 = call %ast.AstNode* @expr_RefProc(%symb.SymbNode* %89)
	store %ast.AstNode* %90, %ast.AstNode** %tree
	br label %L.39
L.41:
	%91 = load %symb.SymbNode** %s
	%92 = load %ast.AstNode** %tree
	%93 = call %ast.AstNode* @expr_Call(%symb.SymbNode* %91, %ast.AstNode* null, %ast.AstNode* %92)
	store %ast.AstNode* %93, %ast.AstNode** %tree
	br label %L.39
L.39:
	br label %L.34
L.36:
	%94 = load %ast.AstNode** %tree
	%95 = getelementptr %ast.AstNode* %94, i32 0, i32 0
	%96 = load i8* %95
	%97 = icmp eq i8 %96, 7
	br i1 %97, label %L.43, label %L.44
L.43:
	%98 = load %type.TypeNode** %t
	store %type.TypeNode* %98, %type.TypeNode** %bt
	br label %L.42
L.44:
	%99 = load %type.TypeNode** %t
	%100 = getelementptr %type.TypeNode* %99, i32 0, i32 0
	%101 = load %type.TypeNode** %100
	%102 = bitcast %type.TypeNode* %101 to %type.TypeNode*
	store %type.TypeNode* %102, %type.TypeNode** %bt
	br label %L.42
L.42:
	%103 = load %type.TypeNode** %bt
	%104 = icmp ne %type.TypeNode* %103, null
	br i1 %104, label %L.46, label %L.47
L.46:
	%105 = load %type.TypeNode** %bt
	%106 = getelementptr %type.TypeNode* %105, i32 0, i32 14
	%107 = load i8* %106
	%108 = icmp eq i8 %107, 5
	br i1 %108, label %L.49, label %L.48
L.49:
	%109 = load %type.TypeNode** %bt
	%110 = getelementptr %type.TypeNode* %109, i32 0, i32 0
	%111 = load %type.TypeNode** %110
	%112 = icmp ne %type.TypeNode* %111, null
	br i1 %112, label %L.51, label %L.52
L.51:
	%113 = load %ast.AstNode** %tree
	%114 = getelementptr %ast.AstNode* %113, i32 0, i32 0
	%115 = load i8* %114
	%116 = icmp ne i8 %115, 7
	br i1 %116, label %L.54, label %L.53
L.54:
	%117 = load %type.TypeNode** %bt
	%118 = load %ast.AstNode** %tree
	%119 = call %ast.AstNode* @ast_New1(i8 27, %type.TypeNode* %117, %ast.AstNode* %118)
	store %ast.AstNode* %119, %ast.AstNode** %tree
	br label %L.53
L.53:
	%120 = load %target.ModelT** @target_Target
	%121 = getelementptr %target.ModelT* %120, i32 0, i32 6
	%122 = getelementptr %target.SizeAlign* %121, i32 0, i32 0
	%123 = load i8* %122
	%124 = zext i8 %123 to i32
	%125 = load %ast.AstNode** %tree
	%126 = getelementptr %ast.AstNode* %125, i32 0, i32 7
	store i32 %124, i32* %126
	%127 = load %type.TypeNode** %bt
	%128 = getelementptr %type.TypeNode* %127, i32 0, i32 0
	%129 = load %type.TypeNode** %128
	%130 = bitcast %type.TypeNode* %129 to %type.TypeNode*
	store %type.TypeNode* %130, %type.TypeNode** %bt
	br label %L.50
L.52:
	call void @lex_Error(i8 23)
	store %ast.AstNode* null, %ast.AstNode** %tree
	br label %L.50
L.50:
	br label %L.48
L.48:
	%131 = load %type.TypeNode** %bt
	%132 = getelementptr %type.TypeNode* %131, i32 0, i32 14
	%133 = load i8* %132
	%134 = icmp eq i8 %133, 7
	br i1 %134, label %L.56, label %L.55
L.56:
	%135 = load %type.TypeNode** %bt
	%136 = getelementptr %type.TypeNode* %135, i32 0, i32 4
	%137 = load %symb.SymbNode** %136
	%138 = bitcast %symb.SymbNode* %137 to %symb.SymbNode*
	%139 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%140 = call %symb.SymbNode* @symb_FindLocal(%symb.SymbNode* %138, [0 x i8]* %139)
	store %symb.SymbNode* %140, %symb.SymbNode** %s
	%141 = load %symb.SymbNode** %s
	%142 = icmp ne %symb.SymbNode* %141, null
	br i1 %142, label %L.58, label %L.59
L.58:
	%143 = call i8 @lex_Next()
	store i8 %143, i8* %tok
	%144 = load %symb.SymbNode** %s
	%145 = getelementptr %symb.SymbNode* %144, i32 0, i32 1
	%146 = load %type.TypeNode** %145
	%147 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %146)
	%148 = load %ast.AstNode** %tree
	%149 = call %ast.AstNode* @ast_New1(i8 13, %type.TypeNode* %147, %ast.AstNode* %148)
	store %ast.AstNode* %149, %ast.AstNode** %tree
	%150 = load %symb.SymbNode** %s
	%151 = getelementptr %symb.SymbNode* %150, i32 0, i32 10
	%152 = load i16* %151
	%153 = zext i16 %152 to i64
	%154 = load %ast.AstNode** %tree
	%155 = getelementptr %ast.AstNode* %154, i32 0, i32 10
	store i64 %153, i64* %155
	%156 = load %target.ModelT** @target_Target
	%157 = getelementptr %target.ModelT* %156, i32 0, i32 6
	%158 = getelementptr %target.SizeAlign* %157, i32 0, i32 0
	%159 = load i8* %158
	%160 = zext i8 %159 to i32
	%161 = load %ast.AstNode** %tree
	%162 = getelementptr %ast.AstNode* %161, i32 0, i32 7
	store i32 %160, i32* %162
	br label %L.57
L.59:
	%163 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 21, [0 x i8]* %163)
	%164 = call i8 @lex_Next()
	store i8 %164, i8* %tok
	br label %L.57
L.57:
	br label %L.55
L.55:
	br label %L.45
L.47:
	call void @lex_Error(i8 59)
	br label %L.45
L.45:
	br label %L.34
L.34:
	br label %L.22
L.24:
	call void @lex_Error(i8 18)
	br label %L.22
L.22:
	br label %L.16
L.16:
	br label %L.12
L.14:
	%165 = call i8 @lex_Next()
	store i8 %165, i8* %tok
	%166 = load %ast.AstNode** %tree
	%167 = getelementptr %ast.AstNode* %166, i32 0, i32 0
	%168 = load i8* %167
	%169 = icmp eq i8 %168, 2
	br i1 %169, label %L.61, label %L.60
L.61:
	%170 = load %ast.AstNode** %tree
	%171 = getelementptr %ast.AstNode* %170, i32 0, i32 9
	%172 = load %symb.SymbNode** %171
	%173 = getelementptr %symb.SymbNode* %172, i32 0, i32 22
	%174 = getelementptr [0 x i8]* %173
	%175 = bitcast [0 x i8]* %174 to [0 x i8]*
	call void @lex_ErrorI(i8 29, [0 x i8]* %175)
	store %ast.AstNode* null, %ast.AstNode** %rv.0
	br label %return
L.60:
	%176 = load %ast.AstNode** %tree
	%177 = getelementptr %ast.AstNode* %176, i32 0, i32 0
	%178 = load i8* %177
	%179 = icmp eq i8 %178, 7
	br i1 %179, label %L.63, label %L.64
L.63:
	%180 = load %type.TypeNode** %t
	store %type.TypeNode* %180, %type.TypeNode** %bt
	br label %L.62
L.64:
	%181 = load %type.TypeNode** %t
	%182 = getelementptr %type.TypeNode* %181, i32 0, i32 0
	%183 = load %type.TypeNode** %182
	%184 = bitcast %type.TypeNode* %183 to %type.TypeNode*
	store %type.TypeNode* %184, %type.TypeNode** %bt
	br label %L.62
L.62:
	%185 = load %type.TypeNode** %bt
	%186 = icmp ne %type.TypeNode* %185, null
	br i1 %186, label %L.66, label %L.67
L.66:
	%187 = load %type.TypeNode** %bt
	%188 = getelementptr %type.TypeNode* %187, i32 0, i32 14
	%189 = load i8* %188
	%190 = icmp eq i8 %189, 5
	br i1 %190, label %L.69, label %L.70
L.69:
	%191 = load %type.TypeNode** %bt
	%192 = getelementptr %type.TypeNode* %191, i32 0, i32 0
	%193 = load %type.TypeNode** %192
	%194 = icmp ne %type.TypeNode* %193, null
	br i1 %194, label %L.72, label %L.73
L.72:
	%195 = load %ast.AstNode** %tree
	%196 = getelementptr %ast.AstNode* %195, i32 0, i32 0
	%197 = load i8* %196
	%198 = icmp ne i8 %197, 7
	br i1 %198, label %L.75, label %L.74
L.75:
	%199 = load %type.TypeNode** %bt
	%200 = load %ast.AstNode** %tree
	%201 = call %ast.AstNode* @ast_New1(i8 27, %type.TypeNode* %199, %ast.AstNode* %200)
	store %ast.AstNode* %201, %ast.AstNode** %tree
	br label %L.74
L.74:
	%202 = load %target.ModelT** @target_Target
	%203 = getelementptr %target.ModelT* %202, i32 0, i32 6
	%204 = getelementptr %target.SizeAlign* %203, i32 0, i32 0
	%205 = load i8* %204
	%206 = zext i8 %205 to i32
	%207 = load %ast.AstNode** %tree
	%208 = getelementptr %ast.AstNode* %207, i32 0, i32 7
	store i32 %206, i32* %208
	br label %L.71
L.73:
	call void @lex_Error(i8 23)
	store %ast.AstNode* null, %ast.AstNode** %rv.0
	br label %return
L.71:
	br label %L.68
L.70:
	%209 = load %type.TypeNode** %bt
	%210 = getelementptr %type.TypeNode* %209, i32 0, i32 14
	%211 = load i8* %210
	%212 = icmp eq i8 %211, 8
	br i1 %212, label %L.77, label %L.78
L.77:
	%213 = load %type.TypeNode** %bt
	%214 = load %ast.AstNode** %tree
	%215 = call %ast.AstNode* @ast_New1(i8 27, %type.TypeNode* %213, %ast.AstNode* %214)
	store %ast.AstNode* %215, %ast.AstNode** %tree
	%216 = load %type.TypeNode** %bt
	%217 = getelementptr %type.TypeNode* %216, i32 0, i32 4
	%218 = load %symb.SymbNode** %217
	%219 = bitcast %symb.SymbNode* %218 to %symb.SymbNode*
	%220 = load %ast.AstNode** %tree
	%221 = call %ast.AstNode* @expr_Call(%symb.SymbNode* %219, %ast.AstNode* %220, %ast.AstNode* null)
	store %ast.AstNode* %221, %ast.AstNode** %tree
	br label %L.76
L.78:
	call void @lex_Error(i8 59)
	br label %L.76
L.76:
	br label %L.68
L.68:
	br label %L.65
L.67:
	call void @lex_Error(i8 59)
	br label %L.65
L.65:
	br label %L.12
L.15:
	%222 = call i8 @lex_Next()
	store i8 %222, i8* %tok
	%223 = load %ast.AstNode** %tree
	%224 = getelementptr %ast.AstNode* %223, i32 0, i32 0
	%225 = load i8* %224
	%226 = icmp eq i8 %225, 2
	br i1 %226, label %L.80, label %L.79
L.80:
	%227 = load %ast.AstNode** %tree
	%228 = getelementptr %ast.AstNode* %227, i32 0, i32 9
	%229 = load %symb.SymbNode** %228
	%230 = getelementptr %symb.SymbNode* %229, i32 0, i32 22
	%231 = getelementptr [0 x i8]* %230
	%232 = bitcast [0 x i8]* %231 to [0 x i8]*
	call void @lex_ErrorI(i8 29, [0 x i8]* %232)
	store %ast.AstNode* null, %ast.AstNode** %rv.0
	br label %return
L.79:
	%233 = load %ast.AstNode** %tree
	%234 = getelementptr %ast.AstNode* %233, i32 0, i32 0
	%235 = load i8* %234
	%236 = icmp eq i8 %235, 7
	br i1 %236, label %L.82, label %L.83
L.82:
	%237 = load %type.TypeNode** %t
	store %type.TypeNode* %237, %type.TypeNode** %bt
	br label %L.81
L.83:
	%238 = load %type.TypeNode** %t
	%239 = getelementptr %type.TypeNode* %238, i32 0, i32 0
	%240 = load %type.TypeNode** %239
	%241 = bitcast %type.TypeNode* %240 to %type.TypeNode*
	store %type.TypeNode* %241, %type.TypeNode** %bt
	br label %L.81
L.81:
	%242 = load %type.TypeNode** %bt
	%243 = icmp ne %type.TypeNode* %242, null
	br i1 %243, label %L.85, label %L.86
L.85:
	%244 = load %type.TypeNode** %bt
	%245 = getelementptr %type.TypeNode* %244, i32 0, i32 14
	%246 = load i8* %245
	%247 = icmp eq i8 %246, 5
	br i1 %247, label %L.88, label %L.87
L.88:
	%248 = load %type.TypeNode** %bt
	%249 = getelementptr %type.TypeNode* %248, i32 0, i32 0
	%250 = load %type.TypeNode** %249
	%251 = icmp ne %type.TypeNode* %250, null
	br i1 %251, label %L.90, label %L.91
L.90:
	%252 = load %ast.AstNode** %tree
	%253 = getelementptr %ast.AstNode* %252, i32 0, i32 0
	%254 = load i8* %253
	%255 = icmp ne i8 %254, 7
	br i1 %255, label %L.93, label %L.92
L.93:
	%256 = load %type.TypeNode** %bt
	%257 = load %ast.AstNode** %tree
	%258 = call %ast.AstNode* @ast_New1(i8 27, %type.TypeNode* %256, %ast.AstNode* %257)
	store %ast.AstNode* %258, %ast.AstNode** %tree
	br label %L.92
L.92:
	%259 = load %target.ModelT** @target_Target
	%260 = getelementptr %target.ModelT* %259, i32 0, i32 6
	%261 = getelementptr %target.SizeAlign* %260, i32 0, i32 0
	%262 = load i8* %261
	%263 = zext i8 %262 to i32
	%264 = load %ast.AstNode** %tree
	%265 = getelementptr %ast.AstNode* %264, i32 0, i32 7
	store i32 %263, i32* %265
	%266 = load %type.TypeNode** %bt
	%267 = getelementptr %type.TypeNode* %266, i32 0, i32 0
	%268 = load %type.TypeNode** %267
	%269 = bitcast %type.TypeNode* %268 to %type.TypeNode*
	store %type.TypeNode* %269, %type.TypeNode** %bt
	br label %L.89
L.91:
	call void @lex_Error(i8 23)
	store %ast.AstNode* null, %ast.AstNode** %tree
	br label %L.89
L.89:
	br label %L.87
L.87:
	%270 = load %type.TypeNode** %bt
	%271 = getelementptr %type.TypeNode* %270, i32 0, i32 14
	%272 = load i8* %271
	%273 = icmp eq i8 %272, 6
	br i1 %273, label %L.95, label %L.96
L.95:
	%index = alloca %ast.AstNode*
	%274 = load %type.TypeNode** %bt
	%275 = getelementptr %type.TypeNode* %274, i32 0, i32 2
	%276 = load %type.TypeNode** %275
	%277 = bitcast %type.TypeNode* %276 to %type.TypeNode*
	%278 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %277)
	store %ast.AstNode* %278, %ast.AstNode** %index
	%279 = load %ast.AstNode** %index
	%280 = icmp eq %ast.AstNode* %279, null
	br i1 %280, label %L.98, label %L.97
L.98:
	call void @lex_Error(i8 62)
	%281 = load %ast.AstNode** @ast_Null
	store %ast.AstNode* %281, %ast.AstNode** %index
	br label %L.97
L.97:
	%282 = load %type.TypeNode** %bt
	%283 = getelementptr %type.TypeNode* %282, i32 0, i32 7
	%284 = load i64* %283
	%285 = icmp ne i64 %284, 0
	br i1 %285, label %L.100, label %L.99
L.100:
	%286 = load %type.TypeNode** %bt
	%287 = getelementptr %type.TypeNode* %286, i32 0, i32 2
	%288 = load %type.TypeNode** %287
	%289 = bitcast %type.TypeNode* %288 to %type.TypeNode*
	%290 = load %ast.AstNode** %index
	%291 = load %type.TypeNode** %bt
	%292 = getelementptr %type.TypeNode* %291, i32 0, i32 2
	%293 = load %type.TypeNode** %292
	%294 = bitcast %type.TypeNode* %293 to %type.TypeNode*
	%295 = load %type.TypeNode** %bt
	%296 = getelementptr %type.TypeNode* %295, i32 0, i32 7
	%297 = load i64* %296
	%298 = call %ast.AstNode* @ast_Const(%type.TypeNode* %294, i64 %297)
	%299 = call %ast.AstNode* @ast_New2(i8 50, %type.TypeNode* %289, %ast.AstNode* %290, %ast.AstNode* %298)
	store %ast.AstNode* %299, %ast.AstNode** %index
	br label %L.99
L.99:
	%300 = load i8* @lex_Token
	store i8 %300, i8* %tok
	%301 = load i8* %tok
	%302 = icmp eq i8 %301, 3
	br i1 %302, label %L.102, label %L.103
L.102:
	%len = alloca %ast.AstNode*
	%303 = call i8 @lex_Next()
	store i8 %303, i8* %tok
	%304 = load %type.TypeNode** %bt
	%305 = getelementptr %type.TypeNode* %304, i32 0, i32 2
	%306 = load %type.TypeNode** %305
	%307 = bitcast %type.TypeNode* %306 to %type.TypeNode*
	%308 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %307)
	store %ast.AstNode* %308, %ast.AstNode** %len
	%309 = load %ast.AstNode** %tree
	%310 = load %ast.AstNode** %index
	%311 = load %ast.AstNode** %len
	%312 = call %ast.AstNode* @expr_Slice(%ast.AstNode* %309, %ast.AstNode* %310, %ast.AstNode* %311)
	store %ast.AstNode* %312, %ast.AstNode** %tree
	store i8 1, i8* %done
	br label %L.101
L.103:
	%313 = load %type.TypeNode** %bt
	%314 = getelementptr %type.TypeNode* %313, i32 0, i32 0
	%315 = load %type.TypeNode** %314
	%316 = bitcast %type.TypeNode* %315 to %type.TypeNode*
	%317 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %316)
	%318 = load %ast.AstNode** %tree
	%319 = load %ast.AstNode** %index
	%320 = call %ast.AstNode* @ast_New2(i8 14, %type.TypeNode* %317, %ast.AstNode* %318, %ast.AstNode* %319)
	store %ast.AstNode* %320, %ast.AstNode** %tree
	%321 = load %target.ModelT** @target_Target
	%322 = getelementptr %target.ModelT* %321, i32 0, i32 6
	%323 = getelementptr %target.SizeAlign* %322, i32 0, i32 0
	%324 = load i8* %323
	%325 = zext i8 %324 to i32
	%326 = load %ast.AstNode** %tree
	%327 = getelementptr %ast.AstNode* %326, i32 0, i32 7
	store i32 %325, i32* %327
	br label %L.101
L.101:
	br label %L.94
L.96:
	call void @lex_Error(i8 60)
	br label %L.94
L.94:
	br label %L.84
L.86:
	call void @lex_Error(i8 60)
	br label %L.84
L.84:
	%328 = call i8 @lex_Expect(i8 35)
	store i8 %328, i8* %tok
	br label %L.12
L.11:
	store i8 1, i8* %done
	br label %L.12
L.12:
	br label %L.4
L.5:
	%329 = load %ast.AstNode** %tree
	store %ast.AstNode* %329, %ast.AstNode** %rv.0
	br label %return
return:
	%330 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %330
}
define internal %ast.AstNode* @expr_GetLHS() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%s = alloca %symb.SymbNode*
	%tok = alloca i8
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 41
	br i1 %2, label %L.2, label %L.3
L.2:
	%3 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%4 = call %symb.SymbNode* @symb_Find([0 x i8]* %3)
	store %symb.SymbNode* %4, %symb.SymbNode** %s
	%5 = call i8 @lex_Next()
	store i8 %5, i8* %tok
	%6 = load %symb.SymbNode** %s
	%7 = icmp ne %symb.SymbNode* %6, null
	br i1 %7, label %L.5, label %L.6
L.5:
	%8 = load %symb.SymbNode** %s
	%9 = call %ast.AstNode* @expr_Primary(%symb.SymbNode* %8, %type.TypeNode* null)
	store %ast.AstNode* %9, %ast.AstNode** %tree
	%10 = load %ast.AstNode** %tree
	%11 = getelementptr %ast.AstNode* %10, i32 0, i32 0
	%12 = load i8* %11
	%13 = icmp eq i8 %12, 2
	br i1 %13, label %L.8, label %L.7
L.8:
	%14 = load %ast.AstNode** %tree
	%15 = getelementptr %ast.AstNode* %14, i32 0, i32 9
	%16 = load %symb.SymbNode** %15
	%17 = getelementptr %symb.SymbNode* %16, i32 0, i32 22
	%18 = getelementptr [0 x i8]* %17
	%19 = bitcast [0 x i8]* %18 to [0 x i8]*
	call void @lex_ErrorI(i8 29, [0 x i8]* %19)
	br label %L.7
L.7:
	br label %L.4
L.6:
	%20 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 19, [0 x i8]* %20)
	br label %L.4
L.4:
	br label %L.1
L.3:
	call void @lex_Error(i8 18)
	br label %L.1
L.1:
	%21 = load %ast.AstNode** %tree
	store %ast.AstNode* %21, %ast.AstNode** %rv.0
	br label %return
return:
	%22 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %22
}
define internal %ast.AstNode* @expr_Container(%ast.AstNode* %tree$, %type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%otree = alloca %ast.AstNode*
	%0 = load %type.TypeNode** %t
	%1 = call %ast.AstNode* @expr_Primary(%symb.SymbNode* null, %type.TypeNode* %0)
	store %ast.AstNode* %1, %ast.AstNode** %otree
	%2 = load %ast.AstNode** %otree
	%3 = icmp ne %ast.AstNode* %2, null
	br i1 %3, label %L.2, label %L.1
L.2:
	%4 = load %ast.AstNode** %otree
	%5 = call %ast.AstNode* @expr_GetOffset(%ast.AstNode* %4)
	store %ast.AstNode* %5, %ast.AstNode** %otree
	br label %L.1
L.1:
	%6 = load %ast.AstNode** %otree
	%7 = icmp ne %ast.AstNode* %6, null
	br i1 %7, label %L.4, label %L.3
L.4:
	%8 = load %ast.AstNode** %tree
	%9 = load %type.TypeNode** @type_wordtype
	%10 = call %ast.AstNode* @ast_Cast(%ast.AstNode* %8, %type.TypeNode* %9)
	store %ast.AstNode* %10, %ast.AstNode** %tree
	%11 = load %type.TypeNode** @type_wordtype
	%12 = load %ast.AstNode** %tree
	%13 = load %ast.AstNode** %otree
	%14 = call %ast.AstNode* @ast_New2(i8 50, %type.TypeNode* %11, %ast.AstNode* %12, %ast.AstNode* %13)
	store %ast.AstNode* %14, %ast.AstNode** %tree
	%15 = load %ast.AstNode** %tree
	%16 = load %type.TypeNode** %t
	%17 = call %ast.AstNode* @ast_Cast(%ast.AstNode* %15, %type.TypeNode* %16)
	store %ast.AstNode* %17, %ast.AstNode** %tree
	br label %L.3
L.3:
	%18 = load %ast.AstNode** %tree
	store %ast.AstNode* %18, %ast.AstNode** %rv.0
	br label %return
return:
	%19 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %19
}
define internal %ast.AstNode* @expr_Term(%type.TypeNode* %et$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%et = alloca %type.TypeNode*
	store %type.TypeNode* %et$, %type.TypeNode** %et
	%tree = alloca %ast.AstNode*
	%tok = alloca i8
	%t = alloca %type.TypeNode*
	%s = alloca %symb.SymbNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = zext i8 %1 to i32
	switch i32 %2, label %L.1 [
		i32 41, label %L.3
		i32 38, label %L.4
		i32 39, label %L.5
		i32 40, label %L.6
		i32 32, label %L.7
		i32 36, label %L.8
	]
L.3:
	%3 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%4 = call %symb.SymbNode* @symb_Find([0 x i8]* %3)
	store %symb.SymbNode* %4, %symb.SymbNode** %s
	%5 = load %symb.SymbNode** %s
	%6 = icmp ne %symb.SymbNode* %5, null
	br i1 %6, label %L.10, label %L.11
L.10:
	%7 = call i8 @lex_Next()
	store i8 %7, i8* %tok
	%8 = load %symb.SymbNode** %s
	%9 = load %type.TypeNode** %et
	%10 = call %ast.AstNode* @expr_Primary(%symb.SymbNode* %8, %type.TypeNode* %9)
	store %ast.AstNode* %10, %ast.AstNode** %tree
	%11 = load %ast.AstNode** %tree
	%12 = icmp ne %ast.AstNode* %11, null
	br i1 %12, label %L.13, label %L.12
L.13:
	%13 = load i8* @lex_Token
	store i8 %13, i8* %tok
	%14 = load i8* %tok
	%15 = icmp eq i8 %14, 8
	br i1 %15, label %L.15, label %L.14
L.15:
	%16 = call i8 @lex_Next()
	store i8 %16, i8* %tok
	%17 = load %ast.AstNode** %tree
	%18 = call %ast.AstNode* @expr_Property(%ast.AstNode* %17)
	store %ast.AstNode* %18, %ast.AstNode** %tree
	br label %L.14
L.14:
	%19 = load %ast.AstNode** %tree
	%20 = getelementptr %ast.AstNode* %19, i32 0, i32 0
	%21 = load i8* %20
	%22 = icmp eq i8 %21, 2
	br i1 %22, label %L.17, label %L.18
L.17:
	%23 = load i8* %tok
	%24 = zext i8 %23 to i32
	switch i32 %24, label %L.19 [
		i32 32, label %L.21
		i32 36, label %L.22
	]
L.21:
	%25 = call i8 @lex_Next()
	store i8 %25, i8* %tok
	%26 = load %ast.AstNode** %tree
	%27 = getelementptr %ast.AstNode* %26, i32 0, i32 8
	%28 = load %type.TypeNode** %27
	store %type.TypeNode* %28, %type.TypeNode** %t
	%29 = call %ast.AstNode* @expr_Bool(%type.TypeNode* null)
	store %ast.AstNode* %29, %ast.AstNode** %tree
	%30 = load i8* @lex_Token
	store i8 %30, i8* %tok
	%31 = load i8* %tok
	%32 = icmp eq i8 %31, 5
	br i1 %32, label %L.24, label %L.25
L.24:
	%33 = call i8 @lex_Next()
	store i8 %33, i8* %tok
	%34 = load %ast.AstNode** %tree
	%35 = load %type.TypeNode** %t
	%36 = call %ast.AstNode* @expr_Container(%ast.AstNode* %34, %type.TypeNode* %35)
	store %ast.AstNode* %36, %ast.AstNode** %tree
	br label %L.23
L.25:
	%37 = load %ast.AstNode** %tree
	%38 = load %type.TypeNode** %t
	%39 = call %ast.AstNode* @ast_Cast(%ast.AstNode* %37, %type.TypeNode* %38)
	store %ast.AstNode* %39, %ast.AstNode** %tree
	br label %L.23
L.23:
	%40 = call i8 @lex_Expect(i8 33)
	store i8 %40, i8* %tok
	br label %L.20
L.22:
	%41 = load %ast.AstNode** %tree
	%42 = getelementptr %ast.AstNode* %41, i32 0, i32 8
	%43 = load %type.TypeNode** %42
	%44 = call %ast.AstNode* @expr_CompositeValue(%type.TypeNode* %43)
	store %ast.AstNode* %44, %ast.AstNode** %tree
	br label %L.20
L.19:
	br label %L.20
L.20:
	br label %L.16
L.18:
	%45 = load %ast.AstNode** %tree
	%46 = getelementptr %ast.AstNode* %45, i32 0, i32 8
	%47 = load %type.TypeNode** %46
	%48 = getelementptr %type.TypeNode* %47, i32 0, i32 14
	%49 = load i8* %48
	%50 = icmp ne i8 %49, 8
	br i1 %50, label %L.27, label %L.26
L.27:
	%51 = load %ast.AstNode** %tree
	%52 = call %ast.AstNode* @expr_Load(%ast.AstNode* %51)
	store %ast.AstNode* %52, %ast.AstNode** %tree
	%53 = load %ast.AstNode** %tree
	%54 = icmp ne %ast.AstNode* %53, null
	br i1 %54, label %L.30, label %L.31
L.30:
	%55 = load %ast.AstNode** %tree
	%56 = getelementptr %ast.AstNode* %55, i32 0, i32 0
	%57 = load i8* %56
	%58 = icmp ne i8 %57, 7
	br label %L.31
L.31:
	%59 = phi i1 [ false, %L.27 ], [ %58, %L.30 ]
	br i1 %59, label %L.28, label %L.29
L.28:
	%60 = load %ast.AstNode** %tree
	%61 = getelementptr %ast.AstNode* %60, i32 0, i32 8
	%62 = load %type.TypeNode** %61
	%63 = load %target.ModelT** @target_Target
	%64 = getelementptr %target.ModelT* %63, i32 0, i32 0
	%65 = load i8* %64
	%66 = call i8 @type_NeedSwap(%type.TypeNode* %62, i8 %65)
	%67 = icmp ne i8 %66, 0
	br label %L.29
L.29:
	%68 = phi i1 [ false, %L.31 ], [ %67, %L.28 ]
	br i1 %68, label %L.33, label %L.32
L.33:
	%69 = load %ast.AstNode** %tree
	%70 = getelementptr %ast.AstNode* %69, i32 0, i32 8
	%71 = load %type.TypeNode** %70
	%72 = load %ast.AstNode** %tree
	%73 = call %ast.AstNode* @ast_New1(i8 32, %type.TypeNode* %71, %ast.AstNode* %72)
	store %ast.AstNode* %73, %ast.AstNode** %tree
	%74 = load %ast.AstNode** %tree
	%75 = getelementptr %ast.AstNode* %74, i32 0, i32 8
	%76 = load %type.TypeNode** %75
	%77 = load %target.ModelT** @target_Target
	%78 = getelementptr %target.ModelT* %77, i32 0, i32 0
	%79 = load i8* %78
	%80 = call %type.TypeNode* @type_ChangeOrder(%type.TypeNode* %76, i8 %79)
	%81 = load %ast.AstNode** %tree
	%82 = getelementptr %ast.AstNode* %81, i32 0, i32 8
	store %type.TypeNode* %80, %type.TypeNode** %82
	br label %L.32
L.32:
	br label %L.26
L.26:
	br label %L.16
L.16:
	br label %L.12
L.12:
	br label %L.9
L.11:
	%83 = load %type.TypeNode** %et
	%84 = icmp ne %type.TypeNode* %83, null
	br i1 %84, label %L.34, label %L.35
L.34:
	%85 = load %type.TypeNode** %et
	%86 = getelementptr %type.TypeNode* %85, i32 0, i32 14
	%87 = load i8* %86
	%88 = icmp eq i8 %87, 1
	br label %L.35
L.35:
	%89 = phi i1 [ false, %L.11 ], [ %88, %L.34 ]
	br i1 %89, label %L.37, label %L.38
L.37:
	%90 = load %type.TypeNode** %et
	%91 = call %ast.AstNode* @expr_EnumConst(%type.TypeNode* %90)
	store %ast.AstNode* %91, %ast.AstNode** %tree
	br label %L.36
L.38:
	%92 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 19, [0 x i8]* %92)
	br label %L.36
L.36:
	%93 = call i8 @lex_Next()
	store i8 %93, i8* %tok
	br label %L.9
L.9:
	br label %L.2
L.4:
	%94 = load %type.TypeNode** %et
	%95 = call %ast.AstNode* @ast_New(i8 7, %type.TypeNode* %94)
	store %ast.AstNode* %95, %ast.AstNode** %tree
	%96 = load i64* @lex_Number
	%97 = load %ast.AstNode** %tree
	%98 = getelementptr %ast.AstNode* %97, i32 0, i32 10
	store i64 %96, i64* %98
	%99 = load i64* @lex_Number
	%100 = call i8 @type_bitsize(i64 %99)
	%101 = zext i8 %100 to i32
	%102 = load %ast.AstNode** %tree
	%103 = getelementptr %ast.AstNode* %102, i32 0, i32 7
	store i32 %101, i32* %103
	%104 = load %type.TypeNode** %et
	%105 = icmp eq %type.TypeNode* %104, null
	br i1 %105, label %L.40, label %L.41
L.40:
	%106 = load %type.TypeNode** @type_wordtype
	%107 = load %ast.AstNode** %tree
	%108 = getelementptr %ast.AstNode* %107, i32 0, i32 8
	store %type.TypeNode* %106, %type.TypeNode** %108
	br label %L.39
L.41:
	%109 = load %type.TypeNode** %et
	%110 = getelementptr %type.TypeNode* %109, i32 0, i32 14
	%111 = load i8* %110
	%112 = icmp eq i8 %111, 5
	br i1 %112, label %L.43, label %L.44
L.43:
	%113 = load %type.TypeNode** %et
	%114 = load %ast.AstNode** %tree
	%115 = getelementptr %ast.AstNode* %114, i32 0, i32 8
	store %type.TypeNode* %113, %type.TypeNode** %115
	%116 = load %target.ModelT** @target_Target
	%117 = getelementptr %target.ModelT* %116, i32 0, i32 6
	%118 = getelementptr %target.SizeAlign* %117, i32 0, i32 0
	%119 = load i8* %118
	%120 = zext i8 %119 to i32
	%121 = load %ast.AstNode** %tree
	%122 = getelementptr %ast.AstNode* %121, i32 0, i32 7
	store i32 %120, i32* %122
	br label %L.42
L.44:
	%123 = load %type.TypeNode** %et
	%124 = getelementptr %type.TypeNode* %123, i32 0, i32 9
	%125 = load i32* %124
	%126 = load %ast.AstNode** %tree
	%127 = getelementptr %ast.AstNode* %126, i32 0, i32 7
	%128 = load i32* %127
	%129 = icmp ugt i32 %125, %128
	br i1 %129, label %L.46, label %L.45
L.46:
	%130 = load %type.TypeNode** %et
	%131 = getelementptr %type.TypeNode* %130, i32 0, i32 9
	%132 = load i32* %131
	%133 = load %ast.AstNode** %tree
	%134 = getelementptr %ast.AstNode* %133, i32 0, i32 7
	store i32 %132, i32* %134
	br label %L.45
L.45:
	br label %L.42
L.42:
	br label %L.39
L.39:
	%135 = call i8 @lex_Next()
	store i8 %135, i8* %tok
	br label %L.2
L.5:
	%136 = load %type.TypeNode** %et
	%137 = call %ast.AstNode* @ast_New(i8 8, %type.TypeNode* %136)
	store %ast.AstNode* %137, %ast.AstNode** %tree
	%138 = load i64* @lex_Number
	%139 = load %ast.AstNode** %tree
	%140 = getelementptr %ast.AstNode* %139, i32 0, i32 10
	store i64 %138, i64* %140
	%141 = load %ast.AstNode** %tree
	%142 = getelementptr %ast.AstNode* %141, i32 0, i32 7
	store i32 64, i32* %142
	%143 = load i16* @lex_Scale
	%144 = load %ast.AstNode** %tree
	%145 = getelementptr %ast.AstNode* %144, i32 0, i32 4
	store i16 %143, i16* %145
	%146 = load %type.TypeNode** %et
	%147 = icmp eq %type.TypeNode* %146, null
	br i1 %147, label %L.48, label %L.47
L.48:
	%148 = load %type.TypeNode** @type_floattype
	%149 = load %ast.AstNode** %tree
	%150 = getelementptr %ast.AstNode* %149, i32 0, i32 8
	store %type.TypeNode* %148, %type.TypeNode** %150
	br label %L.47
L.47:
	%151 = call i8 @lex_Next()
	store i8 %151, i8* %tok
	br label %L.2
L.6:
	%152 = call %ast.AstNode* @expr_String()
	store %ast.AstNode* %152, %ast.AstNode** %tree
	br label %L.2
L.7:
	%153 = call i8 @lex_Next()
	store i8 %153, i8* %tok
	%154 = load %type.TypeNode** %et
	%155 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %154)
	store %ast.AstNode* %155, %ast.AstNode** %tree
	%156 = load i8* @lex_Token
	store i8 %156, i8* %tok
	%157 = call i8 @lex_Expect(i8 33)
	br label %L.2
L.8:
	%158 = load %type.TypeNode** %et
	%159 = call %ast.AstNode* @expr_CompositeValue(%type.TypeNode* %158)
	store %ast.AstNode* %159, %ast.AstNode** %tree
	br label %L.2
L.1:
	br label %L.2
L.2:
	%160 = load %ast.AstNode** %tree
	store %ast.AstNode* %160, %ast.AstNode** %rv.0
	br label %return
return:
	%161 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %161
}
define internal %ast.AstNode* @expr_Unary(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tree = alloca %ast.AstNode*
	%tl = alloca %type.TypeNode*
	%tok = alloca i8
	%savetok = alloca i8
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	store i8 %1, i8* %savetok
	%2 = load i8* %tok
	%3 = zext i8 %2 to i32
	switch i32 %3, label %L.1 [
		i32 15, label %L.3
		i32 14, label %L.3
		i32 13, label %L.3
		i32 12, label %L.3
	]
L.3:
	%4 = call i8 @lex_Next()
	store i8 %4, i8* %tok
	br label %L.2
L.1:
	br label %L.2
L.2:
	%5 = load %type.TypeNode** %t
	%6 = call %ast.AstNode* @expr_Term(%type.TypeNode* %5)
	store %ast.AstNode* %6, %ast.AstNode** %tree
	%7 = load %ast.AstNode** %tree
	%8 = icmp ne %ast.AstNode* %7, null
	br i1 %8, label %L.5, label %L.4
L.5:
	%9 = load %ast.AstNode** %tree
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 8
	%11 = load %type.TypeNode** %10
	store %type.TypeNode* %11, %type.TypeNode** %tl
	%12 = load i8* %savetok
	%13 = zext i8 %12 to i32
	switch i32 %13, label %L.6 [
		i32 15, label %L.8
		i32 13, label %L.9
		i32 12, label %L.10
	]
L.8:
	%14 = load %ast.AstNode** %tree
	%15 = getelementptr %ast.AstNode* %14, i32 0, i32 8
	%16 = load %type.TypeNode** %15
	%17 = getelementptr %type.TypeNode* %16, i32 0, i32 14
	%18 = load i8* %17
	%19 = icmp eq i8 %18, 4
	br i1 %19, label %L.12, label %L.13
L.12:
	%20 = load %ast.AstNode** %tree
	%21 = call %ast.AstNode* @ast_OpUnary(i8 36, %ast.AstNode* %20)
	store %ast.AstNode* %21, %ast.AstNode** %tree
	br label %L.11
L.13:
	%22 = load %ast.AstNode** %tree
	%23 = call %ast.AstNode* @ast_OpUnary(i8 33, %ast.AstNode* %22)
	store %ast.AstNode* %23, %ast.AstNode** %tree
	%24 = load %ast.AstNode** %tree
	%25 = getelementptr %ast.AstNode* %24, i32 0, i32 8
	%26 = load %type.TypeNode** %25
	%27 = getelementptr %type.TypeNode* %26, i32 0, i32 14
	%28 = load i8* %27
	%29 = icmp eq i8 %28, 2
	br i1 %29, label %L.15, label %L.14
L.15:
	%30 = load %ast.AstNode** %tree
	%31 = getelementptr %ast.AstNode* %30, i32 0, i32 7
	%32 = load i32* %31
	%33 = call %type.TypeNode* @target_stype(i32 %32)
	%34 = load %ast.AstNode** %tree
	%35 = getelementptr %ast.AstNode* %34, i32 0, i32 8
	store %type.TypeNode* %33, %type.TypeNode** %35
	br label %L.14
L.14:
	br label %L.11
L.11:
	br label %L.7
L.9:
	%36 = load %ast.AstNode** %tree
	%37 = call %ast.AstNode* @ast_OpUnary(i8 34, %ast.AstNode* %36)
	store %ast.AstNode* %37, %ast.AstNode** %tree
	br label %L.7
L.10:
	%38 = load %ast.AstNode** %tree
	%39 = call %ast.AstNode* @ast_ForceBoolean(%ast.AstNode* %38)
	store %ast.AstNode* %39, %ast.AstNode** %tree
	%40 = load %ast.AstNode** %tree
	%41 = call %ast.AstNode* @ast_OpUnary(i8 77, %ast.AstNode* %40)
	store %ast.AstNode* %41, %ast.AstNode** %tree
	br label %L.7
L.6:
	br label %L.7
L.7:
	br label %L.4
L.4:
	%42 = load %ast.AstNode** %tree
	store %ast.AstNode* %42, %ast.AstNode** %rv.0
	br label %return
return:
	%43 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %43
}
@expr_mulop = internal constant [6 x i8] [ i8 51, i8 52, i8 53, i8 68, i8 69, i8 72 ], align 1
@expr_fmulop = internal constant [6 x i8] [ i8 80, i8 81, i8 82, i8 0, i8 0, i8 0 ], align 1
define internal %ast.AstNode* @expr_Mul(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tree = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	%op = alloca i8
	%tok = alloca i8
	%stok = alloca i8
	%0 = load %type.TypeNode** %t
	%1 = call %ast.AstNode* @expr_Unary(%type.TypeNode* %0)
	store %ast.AstNode* %1, %ast.AstNode** %tree
	%2 = load %ast.AstNode** %tree
	%3 = icmp ne %ast.AstNode* %2, null
	br i1 %3, label %L.2, label %L.1
L.2:
	br label %L.3
L.3:
	%4 = load i8* @lex_Token
	store i8 %4, i8* %tok
	%5 = load i8* %tok
	%6 = icmp ult i8 %5, 18
	br i1 %6, label %L.7, label %L.6
L.6:
	%7 = load i8* %tok
	%8 = icmp ugt i8 %7, 23
	br label %L.7
L.7:
	%9 = phi i1 [ true, %L.3 ], [ %8, %L.6 ]
	br i1 %9, label %L.4, label %L.5
L.5:
	%10 = load i8* %tok
	store i8 %10, i8* %stok
	%11 = call i8 @lex_Next()
	store i8 %11, i8* %tok
	%12 = load %ast.AstNode** %tree
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 8
	%14 = load %type.TypeNode** %13
	%15 = call %ast.AstNode* @expr_Unary(%type.TypeNode* %14)
	store %ast.AstNode* %15, %ast.AstNode** %rhs
	%16 = load %ast.AstNode** %rhs
	%17 = icmp eq %ast.AstNode* %16, null
	br i1 %17, label %L.4, label %L.8
L.8:
	%18 = load %ast.AstNode** %tree
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 8
	%20 = load %type.TypeNode** %19
	%21 = getelementptr %type.TypeNode* %20, i32 0, i32 14
	%22 = load i8* %21
	%23 = icmp eq i8 %22, 4
	br i1 %23, label %L.10, label %L.11
L.10:
	%24 = load i8* %stok
	%25 = sub i8 %24, 18
	%26 = zext i8 %25 to i32
	%27 = getelementptr [6 x i8]* @expr_fmulop, i32 0, i32 %26
	%28 = load i8* %27
	%29 = load %ast.AstNode** %tree
	%30 = load %ast.AstNode** %rhs
	%31 = load %type.TypeNode** %t
	%32 = call %ast.AstNode* @ast_OpFloat(i8 %28, %ast.AstNode* %29, %ast.AstNode* %30, %type.TypeNode* %31)
	store %ast.AstNode* %32, %ast.AstNode** %tree
	br label %L.9
L.11:
	%33 = load i8* %stok
	%34 = sub i8 %33, 18
	%35 = zext i8 %34 to i32
	%36 = getelementptr [6 x i8]* @expr_mulop, i32 0, i32 %35
	%37 = load i8* %36
	store i8 %37, i8* %op
	%38 = load i8* %op
	%39 = zext i8 %38 to i32
	switch i32 %39, label %L.12 [
		i32 72, label %L.14
		i32 51, label %L.15
		i32 52, label %L.16
		i32 53, label %L.16
		i32 68, label %L.17
		i32 69, label %L.18
	]
L.14:
	%40 = load i8* %op
	%41 = load %ast.AstNode** %tree
	%42 = load %ast.AstNode** %rhs
	%43 = call %ast.AstNode* @ast_OpLogic(i8 %40, %ast.AstNode* %41, %ast.AstNode* %42)
	store %ast.AstNode* %43, %ast.AstNode** %tree
	br label %L.13
L.15:
	%44 = load i8* %op
	%45 = load %ast.AstNode** %tree
	%46 = load %ast.AstNode** %rhs
	%47 = load %type.TypeNode** %t
	%48 = call %ast.AstNode* @ast_OpMul(i8 %44, %ast.AstNode* %45, %ast.AstNode* %46, %type.TypeNode* %47)
	store %ast.AstNode* %48, %ast.AstNode** %tree
	br label %L.13
L.16:
	%49 = load i8* %op
	%50 = load %ast.AstNode** %tree
	%51 = load %ast.AstNode** %rhs
	%52 = load %type.TypeNode** %t
	%53 = call %ast.AstNode* @ast_OpDiv(i8 %49, %ast.AstNode* %50, %ast.AstNode* %51, %type.TypeNode* %52)
	store %ast.AstNode* %53, %ast.AstNode** %tree
	br label %L.13
L.17:
	%54 = load %ast.AstNode** %tree
	%55 = getelementptr %ast.AstNode* %54, i32 0, i32 8
	%56 = load %type.TypeNode** %55
	%57 = getelementptr %type.TypeNode* %56, i32 0, i32 14
	%58 = load i8* %57
	%59 = icmp eq i8 %58, 3
	br i1 %59, label %L.20, label %L.19
L.20:
	store i8 70, i8* %op
	br label %L.19
L.19:
	%60 = load i8* %op
	%61 = load %ast.AstNode** %tree
	%62 = load %ast.AstNode** %rhs
	%63 = load %type.TypeNode** %t
	%64 = call %ast.AstNode* @ast_OpMul(i8 %60, %ast.AstNode* %61, %ast.AstNode* %62, %type.TypeNode* %63)
	store %ast.AstNode* %64, %ast.AstNode** %tree
	br label %L.13
L.18:
	%65 = load %ast.AstNode** %tree
	%66 = getelementptr %ast.AstNode* %65, i32 0, i32 8
	%67 = load %type.TypeNode** %66
	%68 = getelementptr %type.TypeNode* %67, i32 0, i32 14
	%69 = load i8* %68
	%70 = icmp eq i8 %69, 3
	br i1 %70, label %L.22, label %L.21
L.22:
	store i8 71, i8* %op
	br label %L.21
L.21:
	%71 = load i8* %op
	%72 = load %ast.AstNode** %tree
	%73 = load %ast.AstNode** %rhs
	%74 = load %type.TypeNode** %t
	%75 = call %ast.AstNode* @ast_OpDiv(i8 %71, %ast.AstNode* %72, %ast.AstNode* %73, %type.TypeNode* %74)
	store %ast.AstNode* %75, %ast.AstNode** %tree
	br label %L.13
L.12:
	br label %L.13
L.13:
	br label %L.9
L.9:
	br label %L.3
L.4:
	br label %L.1
L.1:
	%76 = load %ast.AstNode** %tree
	store %ast.AstNode* %76, %ast.AstNode** %rv.0
	br label %return
return:
	%77 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %77
}
@expr_addop = internal constant [4 x i8] [ i8 49, i8 50, i8 73, i8 74 ], align 1
@expr_faddop = internal constant [4 x i8] [ i8 78, i8 79, i8 0, i8 0 ], align 1
define internal %ast.AstNode* @expr_Add(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tree = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	%op = alloca i8
	%tok = alloca i8
	%stok = alloca i8
	%0 = load %type.TypeNode** %t
	%1 = call %ast.AstNode* @expr_Mul(%type.TypeNode* %0)
	store %ast.AstNode* %1, %ast.AstNode** %tree
	%2 = load %ast.AstNode** %tree
	%3 = icmp ne %ast.AstNode* %2, null
	br i1 %3, label %L.2, label %L.1
L.2:
	br label %L.3
L.3:
	%4 = load i8* @lex_Token
	store i8 %4, i8* %tok
	%5 = load i8* %tok
	%6 = icmp ult i8 %5, 14
	br i1 %6, label %L.7, label %L.6
L.6:
	%7 = load i8* %tok
	%8 = icmp ugt i8 %7, 17
	br label %L.7
L.7:
	%9 = phi i1 [ true, %L.3 ], [ %8, %L.6 ]
	br i1 %9, label %L.4, label %L.5
L.5:
	%10 = load i8* %tok
	store i8 %10, i8* %stok
	%11 = call i8 @lex_Next()
	store i8 %11, i8* %tok
	%12 = load %ast.AstNode** %tree
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 8
	%14 = load %type.TypeNode** %13
	%15 = call %ast.AstNode* @expr_Mul(%type.TypeNode* %14)
	store %ast.AstNode* %15, %ast.AstNode** %rhs
	%16 = load %ast.AstNode** %rhs
	%17 = icmp eq %ast.AstNode* %16, null
	br i1 %17, label %L.4, label %L.8
L.8:
	%18 = load %ast.AstNode** %tree
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 8
	%20 = load %type.TypeNode** %19
	%21 = getelementptr %type.TypeNode* %20, i32 0, i32 14
	%22 = load i8* %21
	%23 = icmp eq i8 %22, 4
	br i1 %23, label %L.10, label %L.11
L.10:
	%24 = load i8* %stok
	%25 = sub i8 %24, 14
	%26 = zext i8 %25 to i32
	%27 = getelementptr [4 x i8]* @expr_faddop, i32 0, i32 %26
	%28 = load i8* %27
	%29 = load %ast.AstNode** %tree
	%30 = load %ast.AstNode** %rhs
	%31 = load %type.TypeNode** %t
	%32 = call %ast.AstNode* @ast_OpFloat(i8 %28, %ast.AstNode* %29, %ast.AstNode* %30, %type.TypeNode* %31)
	store %ast.AstNode* %32, %ast.AstNode** %tree
	br label %L.9
L.11:
	%33 = load i8* %stok
	%34 = sub i8 %33, 14
	%35 = zext i8 %34 to i32
	%36 = getelementptr [4 x i8]* @expr_addop, i32 0, i32 %35
	%37 = load i8* %36
	store i8 %37, i8* %op
	%38 = load i8* %op
	%39 = icmp ult i8 %38, 73
	br i1 %39, label %L.13, label %L.14
L.13:
	%40 = load i8* %op
	%41 = load %ast.AstNode** %tree
	%42 = load %ast.AstNode** %rhs
	%43 = load %type.TypeNode** %t
	%44 = call %ast.AstNode* @ast_OpAdd(i8 %40, %ast.AstNode* %41, %ast.AstNode* %42, %type.TypeNode* %43)
	store %ast.AstNode* %44, %ast.AstNode** %tree
	br label %L.12
L.14:
	%45 = load i8* %op
	%46 = load %ast.AstNode** %tree
	%47 = load %ast.AstNode** %rhs
	%48 = call %ast.AstNode* @ast_OpLogic(i8 %45, %ast.AstNode* %46, %ast.AstNode* %47)
	store %ast.AstNode* %48, %ast.AstNode** %tree
	br label %L.12
L.12:
	br label %L.9
L.9:
	br label %L.3
L.4:
	br label %L.1
L.1:
	%49 = load %ast.AstNode** %tree
	store %ast.AstNode* %49, %ast.AstNode** %rv.0
	br label %return
return:
	%50 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %50
}
@expr_ucmpop = internal constant [6 x i8] [ i8 54, i8 55, i8 56, i8 57, i8 58, i8 59 ], align 1
@expr_scmpop = internal constant [6 x i8] [ i8 54, i8 55, i8 60, i8 61, i8 62, i8 63 ], align 1
@S.588 = internal constant [36 x i8] c"ArrayCompare: packed and not packed\00"
define internal %ast.AstNode* @expr_ArrayCompare(i8 zeroext %op$, %ast.AstNode* %lhs$, %ast.AstNode* %rhs$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%op = alloca i8
	%lhs = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	store i8 %op$, i8* %op
	store %ast.AstNode* %lhs$, %ast.AstNode** %lhs
	store %ast.AstNode* %rhs$, %ast.AstNode** %rhs
	%tree = alloca %ast.AstNode*
	%lsize = alloca %ast.AstNode*
	%rsize = alloca %ast.AstNode*
	%align = alloca %ast.AstNode*
	%lalign = alloca i32
	%ralign = alloca i32
	%0 = load %ast.AstNode** %lhs
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 21
	%4 = load i8* %3
	%5 = icmp ne i8 %4, 0
	br i1 %5, label %L.2, label %L.1
L.2:
	%6 = load %ast.AstNode** %rhs
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 8
	%8 = load %type.TypeNode** %7
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 21
	%10 = load i8* %9
	%11 = icmp ne i8 %10, 0
	%12 = xor i1 %11, true
	br i1 %12, label %L.4, label %L.3
L.4:
	%13 = getelementptr [36 x i8]* @S.588
	%14 = bitcast [36 x i8]* %13 to [0 x i8]*
	call void @lex_ErrorS(i8 0, [0 x i8]* %14)
	br label %L.3
L.3:
	%15 = load i8* %op
	%16 = icmp eq i8 %15, 24
	br i1 %16, label %L.6, label %L.7
L.6:
	store i8 54, i8* %op
	br label %L.5
L.7:
	store i8 55, i8* %op
	br label %L.5
L.5:
	%17 = load i8* %op
	%18 = load %type.TypeNode** @type_booltype
	%19 = load %ast.AstNode** %lhs
	%20 = load %ast.AstNode** %rhs
	%21 = call %ast.AstNode* @ast_New2(i8 %17, %type.TypeNode* %18, %ast.AstNode* %19, %ast.AstNode* %20)
	store %ast.AstNode* %21, %ast.AstNode** %tree
	%22 = load %ast.AstNode** %tree
	%23 = getelementptr %ast.AstNode* %22, i32 0, i32 7
	store i32 1, i32* %23
	%24 = load %ast.AstNode** %tree
	store %ast.AstNode* %24, %ast.AstNode** %rv.0
	br label %return
L.1:
	%25 = load %ast.AstNode** %lhs
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 0
	%27 = load i8* %26
	%28 = icmp eq i8 %27, 27
	br i1 %28, label %L.8, label %L.9
L.8:
	%29 = load %ast.AstNode** %lhs
	%30 = getelementptr %ast.AstNode* %29, i32 0, i32 8
	%31 = load %type.TypeNode** %30
	%32 = getelementptr %type.TypeNode* %31, i32 0, i32 14
	%33 = load i8* %32
	%34 = icmp eq i8 %33, 6
	br label %L.9
L.9:
	%35 = phi i1 [ false, %L.1 ], [ %34, %L.8 ]
	br i1 %35, label %L.11, label %L.10
L.11:
	%36 = load %ast.AstNode** %lhs
	%37 = getelementptr %ast.AstNode* %36, i32 0, i32 11
	%38 = getelementptr [0 x %ast.AstNode*]* %37, i32 0, i32 0
	%39 = load %ast.AstNode** %38
	%40 = bitcast %ast.AstNode* %39 to %ast.AstNode*
	store %ast.AstNode* %40, %ast.AstNode** %lhs
	br label %L.10
L.10:
	%41 = load %ast.AstNode** %rhs
	%42 = getelementptr %ast.AstNode* %41, i32 0, i32 0
	%43 = load i8* %42
	%44 = icmp eq i8 %43, 27
	br i1 %44, label %L.12, label %L.13
L.12:
	%45 = load %ast.AstNode** %rhs
	%46 = getelementptr %ast.AstNode* %45, i32 0, i32 8
	%47 = load %type.TypeNode** %46
	%48 = getelementptr %type.TypeNode* %47, i32 0, i32 14
	%49 = load i8* %48
	%50 = icmp eq i8 %49, 6
	br label %L.13
L.13:
	%51 = phi i1 [ false, %L.10 ], [ %50, %L.12 ]
	br i1 %51, label %L.15, label %L.14
L.15:
	%52 = load %ast.AstNode** %rhs
	%53 = getelementptr %ast.AstNode* %52, i32 0, i32 11
	%54 = getelementptr [0 x %ast.AstNode*]* %53, i32 0, i32 0
	%55 = load %ast.AstNode** %54
	%56 = bitcast %ast.AstNode* %55 to %ast.AstNode*
	store %ast.AstNode* %56, %ast.AstNode** %rhs
	br label %L.14
L.14:
	%57 = load %ast.AstNode** %lhs
	%58 = getelementptr %ast.AstNode* %57, i32 0, i32 0
	%59 = load i8* %58
	%60 = icmp eq i8 %59, 10
	br i1 %60, label %L.17, label %L.16
L.16:
	%61 = load %ast.AstNode** %lhs
	%62 = getelementptr %ast.AstNode* %61, i32 0, i32 0
	%63 = load i8* %62
	%64 = icmp eq i8 %63, 9
	br label %L.17
L.17:
	%65 = phi i1 [ true, %L.14 ], [ %64, %L.16 ]
	br i1 %65, label %L.19, label %L.18
L.19:
	%66 = load %ast.AstNode** %lhs
	%67 = getelementptr %ast.AstNode* %66, i32 0, i32 8
	%68 = load %type.TypeNode** %67
	%69 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %68)
	%70 = load %ast.AstNode** %lhs
	%71 = call %ast.AstNode* @ast_New1(i8 16, %type.TypeNode* %69, %ast.AstNode* %70)
	store %ast.AstNode* %71, %ast.AstNode** %lhs
	br label %L.18
L.18:
	%72 = load %ast.AstNode** %rhs
	%73 = getelementptr %ast.AstNode* %72, i32 0, i32 0
	%74 = load i8* %73
	%75 = icmp eq i8 %74, 10
	br i1 %75, label %L.21, label %L.20
L.20:
	%76 = load %ast.AstNode** %rhs
	%77 = getelementptr %ast.AstNode* %76, i32 0, i32 0
	%78 = load i8* %77
	%79 = icmp eq i8 %78, 9
	br label %L.21
L.21:
	%80 = phi i1 [ true, %L.18 ], [ %79, %L.20 ]
	br i1 %80, label %L.23, label %L.22
L.23:
	%81 = load %ast.AstNode** %rhs
	%82 = getelementptr %ast.AstNode* %81, i32 0, i32 8
	%83 = load %type.TypeNode** %82
	%84 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %83)
	%85 = load %ast.AstNode** %rhs
	%86 = call %ast.AstNode* @ast_New1(i8 16, %type.TypeNode* %84, %ast.AstNode* %85)
	store %ast.AstNode* %86, %ast.AstNode** %rhs
	br label %L.22
L.22:
	%87 = load %ast.AstNode** %lhs
	%88 = call i32 @expr_GetAlignment(%ast.AstNode* %87)
	store i32 %88, i32* %lalign
	%89 = load %ast.AstNode** %rhs
	%90 = call i32 @expr_GetAlignment(%ast.AstNode* %89)
	store i32 %90, i32* %ralign
	%91 = load i32* %ralign
	%92 = load i32* %lalign
	%93 = icmp ult i32 %91, %92
	br i1 %93, label %L.25, label %L.24
L.25:
	%94 = load i32* %ralign
	store i32 %94, i32* %lalign
	br label %L.24
L.24:
	%95 = load %ast.AstNode** %lhs
	%96 = getelementptr %ast.AstNode* %95, i32 0, i32 0
	%97 = load i8* %96
	%98 = icmp eq i8 %97, 15
	br i1 %98, label %L.27, label %L.28
L.27:
	%99 = load %ast.AstNode** %lhs
	%100 = getelementptr %ast.AstNode* %99, i32 0, i32 11
	%101 = getelementptr [0 x %ast.AstNode*]* %100, i32 0, i32 2
	%102 = load %ast.AstNode** %101
	%103 = bitcast %ast.AstNode* %102 to %ast.AstNode*
	store %ast.AstNode* %103, %ast.AstNode** %lsize
	br label %L.26
L.28:
	%104 = load %type.TypeNode** @type_wordtype
	%105 = load %ast.AstNode** %lhs
	%106 = getelementptr %ast.AstNode* %105, i32 0, i32 8
	%107 = load %type.TypeNode** %106
	%108 = getelementptr %type.TypeNode* %107, i32 0, i32 0
	%109 = load %type.TypeNode** %108
	%110 = getelementptr %type.TypeNode* %109
	%111 = bitcast %type.TypeNode* %110 to %type.TypeNode*
	%112 = call i32 @type_TypeNode_Span(%type.TypeNode* %111)
	%113 = zext i32 %112 to i64
	%114 = call %ast.AstNode* @ast_Const(%type.TypeNode* %104, i64 %113)
	store %ast.AstNode* %114, %ast.AstNode** %lsize
	br label %L.26
L.26:
	%115 = load %ast.AstNode** %rhs
	%116 = getelementptr %ast.AstNode* %115, i32 0, i32 0
	%117 = load i8* %116
	%118 = icmp eq i8 %117, 15
	br i1 %118, label %L.30, label %L.31
L.30:
	%119 = load %ast.AstNode** %rhs
	%120 = getelementptr %ast.AstNode* %119, i32 0, i32 11
	%121 = getelementptr [0 x %ast.AstNode*]* %120, i32 0, i32 2
	%122 = load %ast.AstNode** %121
	%123 = bitcast %ast.AstNode* %122 to %ast.AstNode*
	store %ast.AstNode* %123, %ast.AstNode** %rsize
	br label %L.29
L.31:
	%124 = load %type.TypeNode** @type_wordtype
	%125 = load %ast.AstNode** %rhs
	%126 = getelementptr %ast.AstNode* %125, i32 0, i32 8
	%127 = load %type.TypeNode** %126
	%128 = getelementptr %type.TypeNode* %127, i32 0, i32 0
	%129 = load %type.TypeNode** %128
	%130 = getelementptr %type.TypeNode* %129
	%131 = bitcast %type.TypeNode* %130 to %type.TypeNode*
	%132 = call i32 @type_TypeNode_Span(%type.TypeNode* %131)
	%133 = zext i32 %132 to i64
	%134 = call %ast.AstNode* @ast_Const(%type.TypeNode* %124, i64 %133)
	store %ast.AstNode* %134, %ast.AstNode** %rsize
	br label %L.29
L.29:
	%135 = load i8* %op
	%136 = load %type.TypeNode** @type_booltype
	%137 = load %ast.AstNode** %lhs
	%138 = load %ast.AstNode** %rhs
	%139 = call %ast.AstNode* @ast_New2(i8 %135, %type.TypeNode* %136, %ast.AstNode* %137, %ast.AstNode* %138)
	store %ast.AstNode* %139, %ast.AstNode** %tree
	%140 = load %ast.AstNode** %tree
	%141 = getelementptr %ast.AstNode* %140, i32 0, i32 7
	store i32 1, i32* %141
	%142 = load %ast.AstNode** %tree
	%143 = load %ast.AstNode** %lsize
	%144 = call %ast.AstNode* @ast_Child(%ast.AstNode* %142, %ast.AstNode* %143)
	store %ast.AstNode* %144, %ast.AstNode** %tree
	%145 = load %type.TypeNode** @type_wordtype
	%146 = load i32* %lalign
	%147 = zext i32 %146 to i64
	%148 = call %ast.AstNode* @ast_Const(%type.TypeNode* %145, i64 %147)
	store %ast.AstNode* %148, %ast.AstNode** %align
	%149 = load %ast.AstNode** %tree
	%150 = load %ast.AstNode** %align
	%151 = call %ast.AstNode* @ast_Child(%ast.AstNode* %149, %ast.AstNode* %150)
	store %ast.AstNode* %151, %ast.AstNode** %tree
	%152 = load %ast.AstNode** %tree
	store %ast.AstNode* %152, %ast.AstNode** %rv.0
	br label %return
return:
	%153 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %153
}
define internal zeroext i8 @expr_NodeKind(%ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca i8
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%kind = alloca i8
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 0
	%2 = load i8* %1
	%3 = zext i8 %2 to i32
	switch i32 %3, label %L.1 [
		i32 12, label %L.3
		i32 15, label %L.3
		i32 14, label %L.3
		i32 13, label %L.3
	]
L.3:
	%4 = load %ast.AstNode** %node
	%5 = getelementptr %ast.AstNode* %4, i32 0, i32 8
	%6 = load %type.TypeNode** %5
	%7 = getelementptr %type.TypeNode* %6, i32 0, i32 0
	%8 = load %type.TypeNode** %7
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 14
	%10 = load i8* %9
	store i8 %10, i8* %kind
	br label %L.2
L.1:
	%11 = load %ast.AstNode** %node
	%12 = getelementptr %ast.AstNode* %11, i32 0, i32 8
	%13 = load %type.TypeNode** %12
	%14 = getelementptr %type.TypeNode* %13, i32 0, i32 14
	%15 = load i8* %14
	store i8 %15, i8* %kind
	br label %L.2
L.2:
	%16 = load i8* %kind
	store i8 %16, i8* %rv.0
	br label %return
return:
	%17 = load i8* %rv.0
	ret i8 %17
}
define internal %ast.AstNode* @expr_Compare(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tree = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	%tok = alloca i8
	%savetok = alloca i8
	%op = alloca i8
	%ok = alloca i8
	%0 = load %type.TypeNode** %t
	%1 = call %ast.AstNode* @expr_Add(%type.TypeNode* %0)
	store %ast.AstNode* %1, %ast.AstNode** %tree
	%2 = load i8* @lex_Token
	store i8 %2, i8* %tok
	%3 = load i8* %tok
	%4 = icmp uge i8 %3, 24
	br i1 %4, label %L.1, label %L.2
L.1:
	%5 = load i8* %tok
	%6 = icmp ule i8 %5, 29
	br label %L.2
L.2:
	%7 = phi i1 [ false, %L.0 ], [ %6, %L.1 ]
	br i1 %7, label %L.4, label %L.3
L.4:
	%8 = load i8* %tok
	store i8 %8, i8* %savetok
	%9 = call i8 @lex_Next()
	store i8 %9, i8* %tok
	%10 = load %ast.AstNode** %tree
	%11 = icmp ne %ast.AstNode* %10, null
	br i1 %11, label %L.6, label %L.5
L.6:
	%12 = load %ast.AstNode** %tree
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 8
	%14 = load %type.TypeNode** %13
	%15 = call %ast.AstNode* @expr_Add(%type.TypeNode* %14)
	store %ast.AstNode* %15, %ast.AstNode** %rhs
	%16 = load %ast.AstNode** %rhs
	%17 = icmp ne %ast.AstNode* %16, null
	br i1 %17, label %L.8, label %L.7
L.8:
	%18 = load %ast.AstNode** %tree
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 8
	%20 = load %type.TypeNode** %19
	%21 = load %ast.AstNode** %rhs
	%22 = getelementptr %ast.AstNode* %21, i32 0, i32 8
	%23 = load %type.TypeNode** %22
	%24 = call i8 @type_Compat(%type.TypeNode* %20, %type.TypeNode* %23)
	store i8 %24, i8* %ok
	%25 = load %ast.AstNode** %tree
	%26 = call i8 @expr_NodeKind(%ast.AstNode* %25)
	%27 = zext i8 %26 to i32
	switch i32 %27, label %L.9 [
		i32 1, label %L.11
		i32 2, label %L.11
		i32 3, label %L.11
		i32 5, label %L.12
		i32 8, label %L.12
		i32 7, label %L.13
		i32 6, label %L.14
	]
L.11:
	%28 = load %ast.AstNode** %tree
	%29 = load %ast.AstNode** %rhs
	%30 = call i8 @expr_IsSignedBinOp(%ast.AstNode* %28, %ast.AstNode* %29)
	%31 = icmp ne i8 %30, 0
	br i1 %31, label %L.16, label %L.17
L.16:
	%32 = load i8* %savetok
	%33 = sub i8 %32, 24
	%34 = zext i8 %33 to i32
	%35 = getelementptr [6 x i8]* @expr_scmpop, i32 0, i32 %34
	%36 = load i8* %35
	store i8 %36, i8* %op
	br label %L.15
L.17:
	%37 = load i8* %savetok
	%38 = sub i8 %37, 24
	%39 = zext i8 %38 to i32
	%40 = getelementptr [6 x i8]* @expr_ucmpop, i32 0, i32 %39
	%41 = load i8* %40
	store i8 %41, i8* %op
	br label %L.15
L.15:
	%42 = load i8* %op
	%43 = load %ast.AstNode** %tree
	%44 = load %ast.AstNode** %rhs
	%45 = call %ast.AstNode* @ast_OpCompare(i8 %42, %ast.AstNode* %43, %ast.AstNode* %44)
	store %ast.AstNode* %45, %ast.AstNode** %tree
	br label %L.10
L.12:
	%46 = load i8* %savetok
	%47 = zext i8 %46 to i32
	switch i32 %47, label %L.18 [
		i32 24, label %L.20
		i32 25, label %L.21
	]
L.20:
	store i8 54, i8* %op
	br label %L.19
L.21:
	store i8 55, i8* %op
	br label %L.19
L.18:
	store i8 0, i8* %ok
	br label %L.19
L.19:
	%48 = load i8* %ok
	%49 = icmp ne i8 %48, 0
	br i1 %49, label %L.23, label %L.22
L.23:
	%50 = load i8* %op
	%51 = load %ast.AstNode** %tree
	%52 = load %ast.AstNode** %rhs
	%53 = call %ast.AstNode* @ast_OpCompare(i8 %50, %ast.AstNode* %51, %ast.AstNode* %52)
	store %ast.AstNode* %53, %ast.AstNode** %tree
	br label %L.22
L.22:
	br label %L.10
L.13:
	%54 = load %ast.AstNode** %rhs
	%55 = call i8 @expr_NodeKind(%ast.AstNode* %54)
	%56 = icmp eq i8 %55, 7
	br i1 %56, label %L.26, label %L.27
L.26:
	%57 = load %ast.AstNode** %tree
	%58 = getelementptr %ast.AstNode* %57, i32 0, i32 8
	%59 = load %type.TypeNode** %58
	%60 = getelementptr %type.TypeNode* %59, i32 0, i32 21
	%61 = load i8* %60
	%62 = icmp ne i8 %61, 0
	br label %L.27
L.27:
	%63 = phi i1 [ false, %L.13 ], [ %62, %L.26 ]
	br i1 %63, label %L.24, label %L.25
L.24:
	%64 = load %ast.AstNode** %rhs
	%65 = getelementptr %ast.AstNode* %64, i32 0, i32 8
	%66 = load %type.TypeNode** %65
	%67 = getelementptr %type.TypeNode* %66, i32 0, i32 21
	%68 = load i8* %67
	%69 = icmp ne i8 %68, 0
	br label %L.25
L.25:
	%70 = phi i1 [ false, %L.27 ], [ %69, %L.24 ]
	br i1 %70, label %L.29, label %L.30
L.29:
	%71 = load i8* %savetok
	%72 = zext i8 %71 to i32
	switch i32 %72, label %L.31 [
		i32 24, label %L.33
		i32 25, label %L.34
	]
L.33:
	store i8 54, i8* %op
	br label %L.32
L.34:
	store i8 55, i8* %op
	br label %L.32
L.31:
	store i8 0, i8* %ok
	br label %L.32
L.32:
	%73 = load i8* %ok
	%74 = icmp ne i8 %73, 0
	br i1 %74, label %L.36, label %L.35
L.36:
	%75 = load i8* %op
	%76 = load %ast.AstNode** %tree
	%77 = load %ast.AstNode** %rhs
	%78 = call %ast.AstNode* @ast_OpCompare(i8 %75, %ast.AstNode* %76, %ast.AstNode* %77)
	store %ast.AstNode* %78, %ast.AstNode** %tree
	br label %L.35
L.35:
	br label %L.28
L.30:
	store i8 0, i8* %ok
	br label %L.28
L.28:
	br label %L.10
L.14:
	%79 = load %ast.AstNode** %rhs
	%80 = call i8 @expr_NodeKind(%ast.AstNode* %79)
	%81 = icmp eq i8 %80, 6
	br i1 %81, label %L.38, label %L.39
L.38:
	%82 = load %ast.AstNode** %tree
	%83 = getelementptr %ast.AstNode* %82, i32 0, i32 8
	%84 = load %type.TypeNode** %83
	%85 = getelementptr %type.TypeNode* %84, i32 0, i32 21
	%86 = load i8* %85
	%87 = icmp ne i8 %86, 0
	br i1 %87, label %L.40, label %L.41
L.40:
	%88 = load %ast.AstNode** %rhs
	%89 = getelementptr %ast.AstNode* %88, i32 0, i32 8
	%90 = load %type.TypeNode** %89
	%91 = getelementptr %type.TypeNode* %90, i32 0, i32 21
	%92 = load i8* %91
	%93 = icmp ne i8 %92, 0
	br label %L.41
L.41:
	%94 = phi i1 [ false, %L.38 ], [ %93, %L.40 ]
	br i1 %94, label %L.43, label %L.44
L.43:
	%95 = load i8* %savetok
	%96 = zext i8 %95 to i32
	switch i32 %96, label %L.45 [
		i32 24, label %L.47
		i32 25, label %L.48
	]
L.47:
	store i8 54, i8* %op
	br label %L.46
L.48:
	store i8 55, i8* %op
	br label %L.46
L.45:
	store i8 0, i8* %ok
	br label %L.46
L.46:
	%97 = load i8* %ok
	%98 = icmp ne i8 %97, 0
	br i1 %98, label %L.50, label %L.49
L.50:
	%99 = load i8* %op
	%100 = load %ast.AstNode** %tree
	%101 = load %ast.AstNode** %rhs
	%102 = call %ast.AstNode* @ast_OpCompare(i8 %99, %ast.AstNode* %100, %ast.AstNode* %101)
	store %ast.AstNode* %102, %ast.AstNode** %tree
	br label %L.49
L.49:
	br label %L.42
L.44:
	%103 = load i8* %savetok
	%104 = zext i8 %103 to i32
	switch i32 %104, label %L.51 [
		i32 24, label %L.53
		i32 25, label %L.54
	]
L.53:
	store i8 24, i8* %op
	br label %L.52
L.54:
	store i8 25, i8* %op
	br label %L.52
L.51:
	store i8 0, i8* %ok
	br label %L.52
L.52:
	%105 = load i8* %ok
	%106 = icmp ne i8 %105, 0
	br i1 %106, label %L.56, label %L.55
L.56:
	%107 = load i8* %op
	%108 = load %ast.AstNode** %tree
	%109 = load %ast.AstNode** %rhs
	%110 = call %ast.AstNode* @expr_ArrayCompare(i8 %107, %ast.AstNode* %108, %ast.AstNode* %109)
	store %ast.AstNode* %110, %ast.AstNode** %tree
	br label %L.55
L.55:
	br label %L.42
L.42:
	br label %L.37
L.39:
	store i8 0, i8* %ok
	br label %L.37
L.37:
	br label %L.10
L.9:
	store i8 0, i8* %ok
	br label %L.10
L.10:
	%111 = load i8* %ok
	%112 = icmp ne i8 %111, 0
	%113 = xor i1 %112, true
	br i1 %113, label %L.58, label %L.57
L.58:
	call void @lex_Error(i8 36)
	br label %L.57
L.57:
	br label %L.7
L.7:
	br label %L.5
L.5:
	br label %L.3
L.3:
	%114 = load %ast.AstNode** %tree
	store %ast.AstNode* %114, %ast.AstNode** %rv.0
	br label %return
return:
	%115 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %115
}
define internal %ast.AstNode* @expr_BoolAnd(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tree = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	%tok = alloca i8
	%0 = load %type.TypeNode** %t
	%1 = call %ast.AstNode* @expr_Compare(%type.TypeNode* %0)
	store %ast.AstNode* %1, %ast.AstNode** %tree
	br label %L.1
L.1:
	%2 = load i8* @lex_Token
	store i8 %2, i8* %tok
	%3 = load i8* %tok
	%4 = icmp ne i8 %3, 30
	br i1 %4, label %L.2, label %L.3
L.3:
	%5 = call i8 @lex_Next()
	store i8 %5, i8* %tok
	%6 = load %ast.AstNode** %tree
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 8
	%8 = load %type.TypeNode** %7
	%9 = call %ast.AstNode* @expr_Compare(%type.TypeNode* %8)
	store %ast.AstNode* %9, %ast.AstNode** %rhs
	%10 = load %ast.AstNode** %tree
	%11 = load %ast.AstNode** %rhs
	%12 = call %ast.AstNode* @ast_OpBool(i8 75, %ast.AstNode* %10, %ast.AstNode* %11)
	store %ast.AstNode* %12, %ast.AstNode** %tree
	br label %L.1
L.2:
	%13 = load %ast.AstNode** %tree
	store %ast.AstNode* %13, %ast.AstNode** %rv.0
	br label %return
return:
	%14 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %14
}
define internal %ast.AstNode* @expr_Bool(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tree = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	%tok = alloca i8
	%0 = load %type.TypeNode** %t
	%1 = call %ast.AstNode* @expr_BoolAnd(%type.TypeNode* %0)
	store %ast.AstNode* %1, %ast.AstNode** %tree
	br label %L.1
L.1:
	%2 = load i8* @lex_Token
	store i8 %2, i8* %tok
	%3 = load i8* %tok
	%4 = icmp ne i8 %3, 31
	br i1 %4, label %L.2, label %L.3
L.3:
	%5 = call i8 @lex_Next()
	store i8 %5, i8* %tok
	%6 = load %ast.AstNode** %tree
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 8
	%8 = load %type.TypeNode** %7
	%9 = call %ast.AstNode* @expr_BoolAnd(%type.TypeNode* %8)
	store %ast.AstNode* %9, %ast.AstNode** %rhs
	%10 = load %ast.AstNode** %tree
	%11 = load %ast.AstNode** %rhs
	%12 = call %ast.AstNode* @ast_OpBool(i8 76, %ast.AstNode* %10, %ast.AstNode* %11)
	store %ast.AstNode* %12, %ast.AstNode** %tree
	br label %L.1
L.2:
	%13 = load %ast.AstNode** %tree
	store %ast.AstNode* %13, %ast.AstNode** %rv.0
	br label %return
return:
	%14 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %14
}
define internal %ast.AstNode* @expr_Const(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tree = alloca %ast.AstNode*
	%0 = load %type.TypeNode** %t
	%1 = icmp ne %type.TypeNode* %0, null
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load %type.TypeNode** %t
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 14
	%4 = load i8* %3
	%5 = zext i8 %4 to i32
	switch i32 %5, label %L.4 [
		i32 5, label %L.6
		i32 7, label %L.7
		i32 6, label %L.8
		i32 8, label %L.9
	]
L.6:
	%6 = load i8* @lex_Token
	%7 = zext i8 %6 to i32
	switch i32 %7, label %L.10 [
		i32 36, label %L.12
		i32 40, label %L.12
	]
L.12:
	%8 = load %type.TypeNode** %t
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 0
	%10 = load %type.TypeNode** %9
	%11 = bitcast %type.TypeNode* %10 to %type.TypeNode*
	%12 = call %ast.AstNode* @expr_Const(%type.TypeNode* %11)
	store %ast.AstNode* %12, %ast.AstNode** %tree
	%13 = load %type.TypeNode** %t
	%14 = load %ast.AstNode** %tree
	%15 = call %ast.AstNode* @ast_New1(i8 16, %type.TypeNode* %13, %ast.AstNode* %14)
	store %ast.AstNode* %15, %ast.AstNode** %tree
	br label %L.11
L.10:
	%16 = load %type.TypeNode** %t
	%17 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %16)
	store %ast.AstNode* %17, %ast.AstNode** %tree
	%18 = load %ast.AstNode** %tree
	%19 = icmp ne %ast.AstNode* %18, null
	br i1 %19, label %L.14, label %L.13
L.14:
	%20 = load %ast.AstNode** %tree
	%21 = getelementptr %ast.AstNode* %20, i32 0, i32 0
	%22 = load i8* %21
	%23 = zext i8 %22 to i32
	switch i32 %23, label %L.15 [
		i32 7, label %L.17
		i32 27, label %L.18
	]
L.17:
	%24 = load %type.TypeNode** %t
	%25 = load %ast.AstNode** %tree
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 8
	store %type.TypeNode* %24, %type.TypeNode** %26
	br label %L.16
L.18:
	%27 = load %ast.AstNode** %tree
	%28 = getelementptr %ast.AstNode* %27, i32 0, i32 11
	%29 = getelementptr [0 x %ast.AstNode*]* %28, i32 0, i32 0
	%30 = load %ast.AstNode** %29
	%31 = bitcast %ast.AstNode* %30 to %ast.AstNode*
	store %ast.AstNode* %31, %ast.AstNode** %tree
	%32 = load %type.TypeNode** %t
	%33 = getelementptr %type.TypeNode* %32, i32 0, i32 0
	%34 = load %type.TypeNode** %33
	%35 = getelementptr %type.TypeNode* %34, i32 0, i32 25
	%36 = load i8* %35
	%37 = icmp ne i8 %36, 0
	br i1 %37, label %L.19, label %L.20
L.19:
	%38 = load %ast.AstNode** %tree
	%39 = getelementptr %ast.AstNode* %38, i32 0, i32 8
	%40 = load %type.TypeNode** %39
	%41 = getelementptr %type.TypeNode* %40, i32 0, i32 0
	%42 = load %type.TypeNode** %41
	%43 = getelementptr %type.TypeNode* %42, i32 0, i32 25
	%44 = load i8* %43
	%45 = icmp ne i8 %44, 0
	%46 = xor i1 %45, true
	br label %L.20
L.20:
	%47 = phi i1 [ false, %L.18 ], [ %46, %L.19 ]
	br i1 %47, label %L.22, label %L.21
L.22:
	%48 = load %type.TypeNode** %t
	%49 = load %ast.AstNode** %tree
	%50 = call %ast.AstNode* @ast_New1(i8 17, %type.TypeNode* %48, %ast.AstNode* %49)
	store %ast.AstNode* %50, %ast.AstNode** %tree
	br label %L.21
L.21:
	br label %L.16
L.15:
	%51 = load %ast.AstNode** %tree
	%52 = getelementptr %ast.AstNode* %51, i32 0, i32 8
	%53 = load %type.TypeNode** %52
	%54 = load %type.TypeNode** %t
	%55 = icmp ne %type.TypeNode* %53, %54
	br i1 %55, label %L.24, label %L.23
L.24:
	%56 = load %ast.AstNode** %tree
	%57 = getelementptr %ast.AstNode* %56, i32 0, i32 8
	%58 = load %type.TypeNode** %57
	%59 = load %type.TypeNode** %t
	%60 = getelementptr %type.TypeNode* %59, i32 0, i32 0
	%61 = load %type.TypeNode** %60
	%62 = bitcast %type.TypeNode* %61 to %type.TypeNode*
	%63 = call i8 @type_Compat(%type.TypeNode* %58, %type.TypeNode* %62)
	%64 = icmp ne i8 %63, 0
	br i1 %64, label %L.26, label %L.27
L.26:
	%65 = load %ast.AstNode** %tree
	%66 = call %ast.AstNode* @expr_CoerceToRef(%ast.AstNode* %65)
	store %ast.AstNode* %66, %ast.AstNode** %tree
	br label %L.25
L.27:
	call void @lex_Error(i8 52)
	br label %L.25
L.25:
	br label %L.23
L.23:
	br label %L.16
L.16:
	br label %L.13
L.13:
	br label %L.11
L.11:
	br label %L.5
L.7:
	%67 = load %type.TypeNode** %t
	%68 = call %ast.AstNode* @expr_RecordConst(%type.TypeNode* %67)
	store %ast.AstNode* %68, %ast.AstNode** %tree
	br label %L.5
L.8:
	%69 = load %type.TypeNode** %t
	%70 = call %ast.AstNode* @expr_ArrayConst(%type.TypeNode* %69)
	store %ast.AstNode* %70, %ast.AstNode** %tree
	br label %L.5
L.9:
	%71 = load %type.TypeNode** %t
	%72 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %71)
	store %ast.AstNode* %72, %ast.AstNode** %tree
	br label %L.5
L.4:
	%73 = load %type.TypeNode** %t
	%74 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %73)
	store %ast.AstNode* %74, %ast.AstNode** %tree
	%75 = load %ast.AstNode** %tree
	%76 = icmp ne %ast.AstNode* %75, null
	br i1 %76, label %L.29, label %L.28
L.29:
	%77 = load %ast.AstNode** %tree
	%78 = load %type.TypeNode** %t
	%79 = getelementptr %type.TypeNode* %78, i32 0, i32 10
	%80 = load i32* %79
	%81 = call %ast.AstNode* @ast_Extend(%ast.AstNode* %77, i32 %80, i8 0)
	store %ast.AstNode* %81, %ast.AstNode** %tree
	%82 = load %type.TypeNode** %t
	%83 = load %ast.AstNode** %tree
	%84 = getelementptr %ast.AstNode* %83, i32 0, i32 8
	store %type.TypeNode* %82, %type.TypeNode** %84
	br label %L.28
L.28:
	br label %L.5
L.5:
	br label %L.1
L.3:
	%85 = load %type.TypeNode** %t
	%86 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %85)
	store %ast.AstNode* %86, %ast.AstNode** %tree
	br label %L.1
L.1:
	%87 = load %ast.AstNode** %tree
	store %ast.AstNode* %87, %ast.AstNode** %rv.0
	br label %return
return:
	%88 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %88
}
define internal i64 @expr_ConstValue(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca i64
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tree = alloca %ast.AstNode*
	%rv = alloca i64
	store i64 0, i64* %rv
	%0 = load %type.TypeNode** %t
	%1 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %0)
	store %ast.AstNode* %1, %ast.AstNode** %tree
	%2 = load %ast.AstNode** %tree
	%3 = icmp ne %ast.AstNode* %2, null
	br i1 %3, label %L.2, label %L.3
L.2:
	%4 = load %ast.AstNode** %tree
	%5 = getelementptr %ast.AstNode* %4, i32 0, i32 0
	%6 = load i8* %5
	%7 = icmp eq i8 %6, 7
	br i1 %7, label %L.5, label %L.6
L.5:
	%8 = load %ast.AstNode** %tree
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 10
	%10 = load i64* %9
	store i64 %10, i64* %rv
	br label %L.4
L.6:
	%11 = load %ast.AstNode** %tree
	%12 = getelementptr %ast.AstNode* %11, i32 0, i32 0
	%13 = load i8* %12
	%14 = icmp eq i8 %13, 27
	br i1 %14, label %L.7, label %L.8
L.7:
	%15 = load %ast.AstNode** %tree
	%16 = getelementptr %ast.AstNode* %15, i32 0, i32 11
	%17 = getelementptr [0 x %ast.AstNode*]* %16, i32 0, i32 0
	%18 = load %ast.AstNode** %17
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 0
	%20 = load i8* %19
	%21 = icmp eq i8 %20, 7
	br label %L.8
L.8:
	%22 = phi i1 [ false, %L.6 ], [ %21, %L.7 ]
	br i1 %22, label %L.10, label %L.9
L.10:
	%23 = load %ast.AstNode** %tree
	%24 = getelementptr %ast.AstNode* %23, i32 0, i32 11
	%25 = getelementptr [0 x %ast.AstNode*]* %24, i32 0, i32 0
	%26 = load %ast.AstNode** %25
	%27 = getelementptr %ast.AstNode* %26, i32 0, i32 10
	%28 = load i64* %27
	store i64 %28, i64* %rv
	br label %L.9
L.9:
	br label %L.4
L.4:
	br label %L.1
L.3:
	call void @lex_Error(i8 72)
	br label %L.1
L.1:
	%29 = load i64* %rv
	store i64 %29, i64* %rv.0
	br label %return
return:
	%30 = load i64* %rv.0
	ret i64 %30
}
define internal %symb.SymbNode* @expr_ConstString() nounwind {
L.0:
	%rv.0 = alloca %symb.SymbNode*
	%tree = alloca %ast.AstNode*
	%0 = call %ast.AstNode* @expr_Bool(%type.TypeNode* null)
	store %ast.AstNode* %0, %ast.AstNode** %tree
	%1 = load %ast.AstNode** %tree
	%2 = icmp ne %ast.AstNode* %1, null
	br i1 %2, label %L.2, label %L.1
L.2:
	%3 = load %ast.AstNode** %tree
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 0
	%5 = load i8* %4
	%6 = icmp eq i8 %5, 9
	br i1 %6, label %L.4, label %L.5
L.4:
	%7 = load %ast.AstNode** %tree
	%8 = getelementptr %ast.AstNode* %7, i32 0, i32 9
	%9 = load %symb.SymbNode** %8
	store %symb.SymbNode* %9, %symb.SymbNode** %rv.0
	br label %return
L.5:
	%10 = load %ast.AstNode** %tree
	%11 = getelementptr %ast.AstNode* %10, i32 0, i32 0
	%12 = load i8* %11
	%13 = icmp eq i8 %12, 27
	br i1 %13, label %L.10, label %L.11
L.10:
	%14 = load %ast.AstNode** %tree
	%15 = getelementptr %ast.AstNode* %14, i32 0, i32 11
	%16 = getelementptr [0 x %ast.AstNode*]* %15, i32 0, i32 0
	%17 = load %ast.AstNode** %16
	%18 = getelementptr %ast.AstNode* %17, i32 0, i32 0
	%19 = load i8* %18
	%20 = icmp eq i8 %19, 12
	br label %L.11
L.11:
	%21 = phi i1 [ false, %L.5 ], [ %20, %L.10 ]
	br i1 %21, label %L.8, label %L.9
L.8:
	%22 = load %ast.AstNode** %tree
	%23 = getelementptr %ast.AstNode* %22, i32 0, i32 11
	%24 = getelementptr [0 x %ast.AstNode*]* %23, i32 0, i32 0
	%25 = load %ast.AstNode** %24
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 9
	%27 = load %symb.SymbNode** %26
	%28 = getelementptr %symb.SymbNode* %27, i32 0, i32 8
	%29 = load %ast.AstNode** %28
	%30 = icmp ne %ast.AstNode* %29, null
	br label %L.9
L.9:
	%31 = phi i1 [ false, %L.11 ], [ %30, %L.8 ]
	br i1 %31, label %L.6, label %L.7
L.6:
	%32 = load %ast.AstNode** %tree
	%33 = getelementptr %ast.AstNode* %32, i32 0, i32 11
	%34 = getelementptr [0 x %ast.AstNode*]* %33, i32 0, i32 0
	%35 = load %ast.AstNode** %34
	%36 = getelementptr %ast.AstNode* %35, i32 0, i32 9
	%37 = load %symb.SymbNode** %36
	%38 = getelementptr %symb.SymbNode* %37, i32 0, i32 8
	%39 = load %ast.AstNode** %38
	%40 = getelementptr %ast.AstNode* %39, i32 0, i32 0
	%41 = load i8* %40
	%42 = icmp eq i8 %41, 9
	br label %L.7
L.7:
	%43 = phi i1 [ false, %L.9 ], [ %42, %L.6 ]
	br i1 %43, label %L.13, label %L.12
L.13:
	%44 = load %ast.AstNode** %tree
	%45 = getelementptr %ast.AstNode* %44, i32 0, i32 11
	%46 = getelementptr [0 x %ast.AstNode*]* %45, i32 0, i32 0
	%47 = load %ast.AstNode** %46
	%48 = getelementptr %ast.AstNode* %47, i32 0, i32 9
	%49 = load %symb.SymbNode** %48
	%50 = getelementptr %symb.SymbNode* %49, i32 0, i32 8
	%51 = load %ast.AstNode** %50
	%52 = getelementptr %ast.AstNode* %51, i32 0, i32 9
	%53 = load %symb.SymbNode** %52
	store %symb.SymbNode* %53, %symb.SymbNode** %rv.0
	br label %return
L.12:
	br label %L.3
L.3:
	br label %L.1
L.1:
	store %symb.SymbNode* null, %symb.SymbNode** %rv.0
	br label %return
return:
	%54 = load %symb.SymbNode** %rv.0
	ret %symb.SymbNode* %54
}
@stmt_isthenlist = internal constant [3 x i8] [ i8 61, i8 58, i8 0 ], align 1
@stmt_iselselist = internal constant [3 x i8] [ i8 61, i8 60, i8 0 ], align 1
@stmt_thenlist = internal constant [2 x i8] [ i8 58, i8 0 ], align 1
@stmt_elselist = internal constant [3 x i8] [ i8 60, i8 59, i8 0 ], align 1
@stmt_aslist = internal constant [2 x i8] [ i8 64, i8 0 ], align 1
@stmt_withlist = internal constant [2 x i8] [ i8 63, i8 0 ], align 1
@stmt_fromlist = internal constant [3 x i8] [ i8 66, i8 65, i8 0 ], align 1
@stmt_bylist = internal constant [2 x i8] [ i8 68, i8 0 ], align 1
@stmt_skiplist = internal constant [3 x i8] [ i8 37, i8 4, i8 0 ], align 1
@stmt_LoopMax = internal constant i32 32, align 4
@stmt_LoopLevel = internal global i8 0, align 1
@stmt_CurFile = internal global %symb.SymbNode* zeroinitializer, align 4
@stmt_skipgroup = internal constant [2 x i8] [ i8 37, i8 0 ], align 1
@stmt_skipstmt = internal constant [2 x i8] [ i8 4, i8 0 ], align 1
@stmt_iflist = internal constant [2 x i8] [ i8 53, i8 0 ], align 1
define internal void @stmt_CCSkip() nounwind {
L.0:
	%tok = alloca i8
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 36
	br i1 %2, label %L.2, label %L.3
L.2:
	%3 = bitcast [2 x i8]* @stmt_skipgroup to [0 x i8]*
	%4 = call i8 @lex_Skip([0 x i8]* %3)
	%5 = call i8 @lex_Expect(i8 37)
	br label %L.1
L.3:
	%6 = load i8* %tok
	%7 = icmp eq i8 %6, 41
	br i1 %7, label %L.5, label %L.4
L.5:
	%8 = bitcast [2 x i8]* @stmt_iflist to [0 x i8]*
	%9 = call i8 @lex_Keyword([0 x i8]* %8)
	store i8 %9, i8* %tok
	br label %L.4
L.4:
	%10 = load i8* %tok
	%11 = icmp eq i8 %10, 53
	br i1 %11, label %L.7, label %L.8
L.7:
	%12 = bitcast [3 x i8]* @stmt_isthenlist to [0 x i8]*
	%13 = call i8 @lex_Skip([0 x i8]* %12)
	store i8 %13, i8* %tok
	%14 = load i8* %tok
	%15 = zext i8 %14 to i32
	switch i32 %15, label %L.9 [
		i32 58, label %L.11
		i32 61, label %L.12
	]
L.11:
	%16 = call i8 @lex_Next()
	store i8 %16, i8* %tok
	call void @stmt_CCSkip()
	%17 = bitcast [3 x i8]* @stmt_elselist to [0 x i8]*
	%18 = call i8 @lex_Keyword([0 x i8]* %17)
	store i8 %18, i8* %tok
	br label %L.10
L.12:
	br label %L.13
L.13:
	%19 = call i8 @lex_Next()
	store i8 %19, i8* %tok
	%20 = bitcast [2 x i8]* @stmt_thenlist to [0 x i8]*
	%21 = call i8 @lex_Skip([0 x i8]* %20)
	store i8 %21, i8* %tok
	%22 = load i8* %tok
	%23 = icmp eq i8 %22, 58
	br i1 %23, label %L.16, label %L.15
L.16:
	%24 = call i8 @lex_Next()
	store i8 %24, i8* %tok
	call void @stmt_CCSkip()
	br label %L.15
L.15:
	%25 = bitcast [3 x i8]* @stmt_iselselist to [0 x i8]*
	%26 = call i8 @lex_Keyword([0 x i8]* %25)
	store i8 %26, i8* %tok
	%27 = load i8* %tok
	%28 = icmp ne i8 %27, 61
	br i1 %28, label %L.14, label %L.17
L.17:
	br label %L.13
L.14:
	br label %L.10
L.9:
	br label %L.10
L.10:
	%29 = load i8* %tok
	%30 = icmp eq i8 %29, 60
	br i1 %30, label %L.19, label %L.20
L.19:
	%31 = call i8 @lex_Next()
	store i8 %31, i8* %tok
	call void @stmt_CCSkip()
	br label %L.18
L.20:
	%32 = load i8* %tok
	%33 = icmp eq i8 %32, 59
	br i1 %33, label %L.22, label %L.21
L.22:
	store i8 53, i8* @lex_Token
	call void @stmt_CCSkip()
	br label %L.21
L.21:
	br label %L.18
L.18:
	br label %L.6
L.8:
	%34 = bitcast [2 x i8]* @stmt_skipstmt to [0 x i8]*
	%35 = call i8 @lex_Skip([0 x i8]* %34)
	%36 = call i8 @lex_Expect(i8 4)
	br label %L.6
L.6:
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
define internal %ast.AstNode* @stmt_CCDo(i8 zeroext %nest$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%nest = alloca i8
	store i8 %nest$, i8* %nest
	%tree = alloca %ast.AstNode*
	%stree = alloca %ast.AstNode*
	%tok = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load i8* @lex_Token
	%1 = icmp eq i8 %0, 36
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = call i8 @lex_Next()
	store i8 %2, i8* %tok
	%3 = call %ast.AstNode* @ast_New(i8 84, %type.TypeNode* null)
	store %ast.AstNode* %3, %ast.AstNode** %tree
	br label %L.4
L.4:
	%4 = load i8* %tok
	%5 = icmp ne i8 %4, 37
	br i1 %5, label %L.7, label %L.8
L.7:
	%6 = load i8* %tok
	%7 = icmp ne i8 %6, 1
	br label %L.8
L.8:
	%8 = phi i1 [ false, %L.4 ], [ %7, %L.7 ]
	%9 = xor i1 %8, true
	br i1 %9, label %L.5, label %L.6
L.6:
	%10 = load i8* %nest
	%11 = zext i8 %10 to i32
	switch i32 %11, label %L.9 [
		i32 0, label %L.11
		i32 1, label %L.12
		i32 2, label %L.13
	]
L.11:
	%12 = call %ast.AstNode* @stmt_ProgStmt()
	store %ast.AstNode* %12, %ast.AstNode** %stree
	br label %L.10
L.12:
	%13 = call %ast.AstNode* @stmt_PkgStmt()
	store %ast.AstNode* %13, %ast.AstNode** %stree
	br label %L.10
L.13:
	%14 = call %ast.AstNode* @stmt_Statement()
	store %ast.AstNode* %14, %ast.AstNode** %stree
	br label %L.10
L.9:
	br label %L.10
L.10:
	%15 = load %ast.AstNode** %stree
	%16 = icmp ne %ast.AstNode* %15, null
	br i1 %16, label %L.15, label %L.14
L.15:
	%17 = load %ast.AstNode** %tree
	%18 = load %ast.AstNode** %stree
	%19 = call %ast.AstNode* @ast_Child(%ast.AstNode* %17, %ast.AstNode* %18)
	store %ast.AstNode* %19, %ast.AstNode** %tree
	br label %L.14
L.14:
	%20 = load i8* @lex_Token
	store i8 %20, i8* %tok
	br label %L.4
L.5:
	%21 = call i8 @lex_Expect(i8 37)
	br label %L.1
L.3:
	%22 = load i8* %nest
	%23 = zext i8 %22 to i32
	switch i32 %23, label %L.16 [
		i32 0, label %L.18
		i32 1, label %L.19
		i32 2, label %L.20
	]
L.18:
	%24 = call %ast.AstNode* @stmt_ProgStmt()
	store %ast.AstNode* %24, %ast.AstNode** %tree
	br label %L.17
L.19:
	%25 = call %ast.AstNode* @stmt_PkgStmt()
	store %ast.AstNode* %25, %ast.AstNode** %tree
	br label %L.17
L.20:
	%26 = call %ast.AstNode* @stmt_Statement()
	store %ast.AstNode* %26, %ast.AstNode** %tree
	br label %L.17
L.16:
	br label %L.17
L.17:
	br label %L.1
L.1:
	%27 = load %ast.AstNode** %tree
	store %ast.AstNode* %27, %ast.AstNode** %rv.0
	br label %return
return:
	%28 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %28
}
define internal %ast.AstNode* @stmt_CCIfTail(%ast.AstNode* %ctree$, i8 zeroext %nest$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%ctree = alloca %ast.AstNode*
	%nest = alloca i8
	store %ast.AstNode* %ctree$, %ast.AstNode** %ctree
	store i8 %nest$, i8* %nest
	%tree = alloca %ast.AstNode*
	%tok = alloca i8
	%t = alloca %type.TypeNode*
	%val = alloca i64
	%vlo = alloca i64
	%vhi = alloca i64
	%doneit = alloca i8
	%doit = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load %ast.AstNode** %ctree
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	store %type.TypeNode* %2, %type.TypeNode** %t
	%3 = load %ast.AstNode** %ctree
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 10
	%5 = load i64* %4
	store i64 %5, i64* %val
	%6 = bitcast [3 x i8]* @stmt_isthenlist to [0 x i8]*
	%7 = call i8 @lex_Keyword([0 x i8]* %6)
	store i8 %7, i8* %tok
	%8 = load i8* %tok
	%9 = zext i8 %8 to i32
	switch i32 %9, label %L.1 [
		i32 58, label %L.3
		i32 61, label %L.4
	]
L.3:
	%10 = call i8 @lex_Next()
	store i8 %10, i8* %tok
	%11 = load %type.TypeNode** %t
	%12 = load %type.TypeNode** @type_booltype
	%13 = call i8 @type_Compat(%type.TypeNode* %11, %type.TypeNode* %12)
	%14 = icmp ne i8 %13, 0
	%15 = xor i1 %14, true
	br i1 %15, label %L.6, label %L.5
L.6:
	call void @lex_Error(i8 48)
	%16 = load %ast.AstNode** %ctree
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 10
	store i64 0, i64* %17
	br label %L.5
L.5:
	%18 = load i64* %val
	%19 = trunc i64 %18 to i8
	store i8 %19, i8* %doneit
	%20 = load i8* %doneit
	%21 = icmp ne i8 %20, 0
	br i1 %21, label %L.8, label %L.9
L.8:
	%22 = load i8* %nest
	%23 = call %ast.AstNode* @stmt_CCDo(i8 %22)
	store %ast.AstNode* %23, %ast.AstNode** %tree
	br label %L.7
L.9:
	call void @stmt_CCSkip()
	br label %L.7
L.7:
	br label %L.2
L.4:
	store i8 0, i8* %doneit
	br label %L.10
L.10:
	store i8 0, i8* %doit
	br label %L.12
L.12:
	%24 = call i8 @lex_Next()
	store i8 %24, i8* %tok
	%25 = load %type.TypeNode** %t
	%26 = call i64 @expr_ConstValue(%type.TypeNode* %25)
	store i64 %26, i64* %vlo
	%27 = load i64* %vlo
	store i64 %27, i64* %vhi
	%28 = load i8* @lex_Token
	store i8 %28, i8* %tok
	%29 = load i8* %tok
	%30 = icmp eq i8 %29, 6
	br i1 %30, label %L.15, label %L.14
L.15:
	%31 = call i8 @lex_Next()
	store i8 %31, i8* %tok
	%32 = load %type.TypeNode** %t
	%33 = call i64 @expr_ConstValue(%type.TypeNode* %32)
	store i64 %33, i64* %vhi
	br label %L.14
L.14:
	%34 = load i64* %vlo
	%35 = load i64* %vhi
	%36 = icmp ugt i64 %34, %35
	br i1 %36, label %L.17, label %L.16
L.17:
	br label %L.16
L.16:
	%37 = load i8* %doit
	%38 = icmp ne i8 %37, 0
	br i1 %38, label %L.19, label %L.18
L.18:
	%39 = load i64* %vlo
	%40 = load i64* %val
	%41 = icmp ule i64 %39, %40
	br i1 %41, label %L.20, label %L.21
L.20:
	%42 = load i64* %val
	%43 = load i64* %vhi
	%44 = icmp ule i64 %42, %43
	br label %L.21
L.21:
	%45 = phi i1 [ false, %L.18 ], [ %44, %L.20 ]
	br label %L.19
L.19:
	%46 = phi i1 [ true, %L.16 ], [ %45, %L.21 ]
	%47 = zext i1 %46 to i8
	store i8 %47, i8* %doit
	%48 = load i8* @lex_Token
	store i8 %48, i8* %tok
	%49 = load i8* %tok
	%50 = icmp ne i8 %49, 5
	br i1 %50, label %L.13, label %L.22
L.22:
	br label %L.12
L.13:
	%51 = bitcast [2 x i8]* @stmt_thenlist to [0 x i8]*
	%52 = call i8 @lex_Keyword([0 x i8]* %51)
	store i8 %52, i8* %tok
	%53 = load i8* %tok
	%54 = icmp eq i8 %53, 58
	br i1 %54, label %L.24, label %L.25
L.24:
	%55 = call i8 @lex_Next()
	store i8 %55, i8* %tok
	br label %L.23
L.25:
	call void @lex_ErrorT(i8 17, i8 58)
	br label %L.23
L.23:
	%56 = load i8* %doit
	%57 = icmp ne i8 %56, 0
	br i1 %57, label %L.26, label %L.27
L.26:
	%58 = load i8* %doneit
	%59 = icmp ne i8 %58, 0
	br label %L.27
L.27:
	%60 = phi i1 [ false, %L.23 ], [ %59, %L.26 ]
	br i1 %60, label %L.29, label %L.28
L.29:
	store i8 0, i8* %doit
	br label %L.28
L.28:
	%61 = load i8* %doit
	%62 = icmp ne i8 %61, 0
	br i1 %62, label %L.31, label %L.32
L.31:
	%63 = load i8* %nest
	%64 = call %ast.AstNode* @stmt_CCDo(i8 %63)
	store %ast.AstNode* %64, %ast.AstNode** %tree
	store i8 1, i8* %doneit
	br label %L.30
L.32:
	call void @stmt_CCSkip()
	br label %L.30
L.30:
	%65 = bitcast [3 x i8]* @stmt_isthenlist to [0 x i8]*
	%66 = call i8 @lex_Keyword([0 x i8]* %65)
	store i8 %66, i8* %tok
	%67 = load i8* %tok
	%68 = icmp ne i8 %67, 61
	br i1 %68, label %L.11, label %L.33
L.33:
	br label %L.10
L.11:
	br label %L.2
L.1:
	call void @lex_Error(i8 54)
	br label %L.2
L.2:
	%69 = bitcast [3 x i8]* @stmt_elselist to [0 x i8]*
	%70 = call i8 @lex_Keyword([0 x i8]* %69)
	store i8 %70, i8* %tok
	%71 = load i8* %tok
	%72 = icmp eq i8 %71, 60
	br i1 %72, label %L.35, label %L.36
L.35:
	%73 = call i8 @lex_Next()
	store i8 %73, i8* %tok
	%74 = load i8* %doneit
	%75 = icmp ne i8 %74, 0
	%76 = xor i1 %75, true
	br i1 %76, label %L.38, label %L.39
L.38:
	%77 = load i8* %nest
	%78 = call %ast.AstNode* @stmt_CCDo(i8 %77)
	store %ast.AstNode* %78, %ast.AstNode** %tree
	br label %L.37
L.39:
	call void @stmt_CCSkip()
	br label %L.37
L.37:
	br label %L.34
L.36:
	%79 = load i8* %tok
	%80 = icmp eq i8 %79, 59
	br i1 %80, label %L.41, label %L.40
L.41:
	store i8 53, i8* @lex_Token
	%81 = load i8* %doneit
	%82 = icmp ne i8 %81, 0
	%83 = xor i1 %82, true
	br i1 %83, label %L.43, label %L.44
L.43:
	%84 = load i8* %nest
	%85 = call %ast.AstNode* @stmt_CCDo(i8 %84)
	store %ast.AstNode* %85, %ast.AstNode** %tree
	br label %L.42
L.44:
	call void @stmt_CCSkip()
	br label %L.42
L.42:
	br label %L.40
L.40:
	br label %L.34
L.34:
	%86 = load %ast.AstNode** %tree
	store %ast.AstNode* %86, %ast.AstNode** %rv.0
	br label %return
return:
	%87 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %87
}
define internal %ast.AstNode* @stmt_CCIfStmt(i8 zeroext %nest$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%nest = alloca i8
	store i8 %nest$, i8* %nest
	%ctree = alloca %ast.AstNode*
	%0 = call %ast.AstNode* @expr_Bool(%type.TypeNode* null)
	store %ast.AstNode* %0, %ast.AstNode** %ctree
	%1 = load %ast.AstNode** %ctree
	%2 = icmp eq %ast.AstNode* %1, null
	br i1 %2, label %L.2, label %L.1
L.1:
	%3 = load %ast.AstNode** %ctree
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 0
	%5 = load i8* %4
	%6 = icmp ne i8 %5, 7
	br label %L.2
L.2:
	%7 = phi i1 [ true, %L.0 ], [ %6, %L.1 ]
	br i1 %7, label %L.4, label %L.3
L.4:
	call void @lex_Error(i8 72)
	store %ast.AstNode* null, %ast.AstNode** %rv.0
	br label %return
L.3:
	%8 = load %ast.AstNode** %ctree
	%9 = load i8* %nest
	%10 = call %ast.AstNode* @stmt_CCIfTail(%ast.AstNode* %8, i8 %9)
	store %ast.AstNode* %10, %ast.AstNode** %rv.0
	br label %return
return:
	%11 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %11
}
define internal %ast.AstNode* @stmt_TypeDecl() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%tok = alloca i8
	%s = alloca %symb.SymbNode*
	%bs = alloca %symb.SymbNode*
	%t = alloca %type.TypeNode*
	%bt = alloca %type.TypeNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 41
	br i1 %2, label %L.2, label %L.3
L.2:
	%3 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%4 = call %symb.SymbNode* @symb_New(i8 2, [0 x i8]* %3, i8 1)
	store %symb.SymbNode* %4, %symb.SymbNode** %s
	store %type.TypeNode* null, %type.TypeNode** %bt
	%5 = call i8 @lex_Next()
	store i8 %5, i8* %tok
	%6 = load i8* %tok
	%7 = icmp eq i8 %6, 32
	br i1 %7, label %L.5, label %L.4
L.5:
	%8 = call i8 @lex_Next()
	store i8 %8, i8* %tok
	%9 = load i8* %tok
	%10 = icmp eq i8 %9, 41
	br i1 %10, label %L.7, label %L.6
L.7:
	%11 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%12 = call %symb.SymbNode* @symb_Find([0 x i8]* %11)
	store %symb.SymbNode* %12, %symb.SymbNode** %bs
	%13 = load %symb.SymbNode** %bs
	%14 = icmp ne %symb.SymbNode* %13, null
	br i1 %14, label %L.9, label %L.10
L.9:
	%15 = load %symb.SymbNode** %bs
	%16 = getelementptr %symb.SymbNode* %15, i32 0, i32 13
	%17 = load i8* %16
	%18 = icmp eq i8 %17, 2
	br i1 %18, label %L.12, label %L.13
L.12:
	%19 = load %symb.SymbNode** %bs
	%20 = getelementptr %symb.SymbNode* %19, i32 0, i32 1
	%21 = load %type.TypeNode** %20
	store %type.TypeNode* %21, %type.TypeNode** %bt
	br label %L.11
L.13:
	call void @lex_Error(i8 26)
	br label %L.11
L.11:
	br label %L.8
L.10:
	%22 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 19, [0 x i8]* %22)
	br label %L.8
L.8:
	%23 = call i8 @lex_Next()
	store i8 %23, i8* %tok
	br label %L.6
L.6:
	%24 = call i8 @lex_Expect(i8 33)
	store i8 %24, i8* %tok
	br label %L.4
L.4:
	%25 = load %symb.SymbNode** %s
	%26 = getelementptr %symb.SymbNode* %25, i32 0, i32 15
	%27 = load i8* %26
	%28 = icmp ne i8 %27, 0
	%29 = xor i1 %28, true
	br i1 %29, label %L.15, label %L.14
L.15:
	%30 = load %symb.SymbNode** %s
	call void @symb_MakeVisible(%symb.SymbNode* %30)
	br label %L.14
L.14:
	%31 = load i8* %tok
	%32 = icmp eq i8 %31, 3
	br i1 %32, label %L.17, label %L.16
L.17:
	%33 = call i8 @lex_Next()
	store i8 %33, i8* %tok
	%34 = load i8* %tok
	%35 = load %type.TypeNode** %bt
	%36 = call %type.TypeNode* @type_Def(i8 %34, %type.TypeNode* %35)
	store %type.TypeNode* %36, %type.TypeNode** %t
	%37 = load %type.TypeNode** %t
	%38 = icmp ne %type.TypeNode* %37, null
	br i1 %38, label %L.19, label %L.18
L.19:
	%39 = load %type.TypeNode** %t
	%40 = getelementptr %type.TypeNode* %39, i32 0, i32 3
	%41 = load %symb.SymbNode** %40
	%42 = icmp ne %symb.SymbNode* %41, null
	br i1 %42, label %L.21, label %L.20
L.21:
	%at = alloca %type.TypeNode*
	%43 = load %type.TypeNode** %t
	store %type.TypeNode* %43, %type.TypeNode** %at
	%44 = load %type.TypeNode** %at
	%45 = call %type.TypeNode* @type_Clone(%type.TypeNode* %44)
	store %type.TypeNode* %45, %type.TypeNode** %t
	%46 = load %type.TypeNode** %at
	%47 = bitcast %type.TypeNode* %46 to %type.TypeNode*
	%48 = load %type.TypeNode** %t
	%49 = getelementptr %type.TypeNode* %48, i32 0, i32 1
	store %type.TypeNode* %47, %type.TypeNode** %49
	br label %L.20
L.20:
	%50 = load %symb.SymbNode** %s
	%51 = bitcast %symb.SymbNode* %50 to %symb.SymbNode*
	%52 = load %type.TypeNode** %t
	%53 = getelementptr %type.TypeNode* %52, i32 0, i32 3
	store %symb.SymbNode* %51, %symb.SymbNode** %53
	br label %L.18
L.18:
	%54 = load i8* @lex_Token
	store i8 %54, i8* %tok
	%55 = load i8* %tok
	%56 = icmp eq i8 %55, 3
	br i1 %56, label %L.23, label %L.22
L.23:
	%57 = load %type.TypeNode** %t
	%58 = call %type.TypeNode* @type_TypeAttributes(%type.TypeNode* %57)
	store %type.TypeNode* %58, %type.TypeNode** %t
	br label %L.22
L.22:
	%59 = load %type.TypeNode** %t
	%60 = load %symb.SymbNode** %s
	%61 = getelementptr %symb.SymbNode* %60, i32 0, i32 1
	store %type.TypeNode* %59, %type.TypeNode** %61
	%62 = load %symb.SymbNode** %s
	%63 = getelementptr %symb.SymbNode* %62, i32 0, i32 15
	%64 = load i8* %63
	%65 = icmp ne i8 %64, 0
	br i1 %65, label %L.25, label %L.24
L.25:
	%66 = load %symb.SymbNode** %s
	%67 = load %type.TypeNode** %t
	call void @type_FwdFix(%symb.SymbNode* %66, %type.TypeNode* %67)
	br label %L.24
L.24:
	%68 = load %type.TypeNode** %t
	call void @type_Final(%type.TypeNode* %68)
	br label %L.16
L.16:
	%69 = call i8 @lex_Expect(i8 4)
	store i8 %69, i8* %tok
	br label %L.1
L.3:
	call void @lex_Error(i8 18)
	br label %L.1
L.1:
	%70 = load %ast.AstNode** %tree
	store %ast.AstNode* %70, %ast.AstNode** %rv.0
	br label %return
return:
	%71 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %71
}
define internal %ast.AstNode* @stmt_VarNew(%symb.SymbNode* %s$, %type.TypeNode* %t$, %ast.AstNode* %iv$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%s = alloca %symb.SymbNode*
	%t = alloca %type.TypeNode*
	%iv = alloca %ast.AstNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store %type.TypeNode* %t$, %type.TypeNode** %t
	store %ast.AstNode* %iv$, %ast.AstNode** %iv
	%node = alloca %ast.AstNode*
	%0 = load %type.TypeNode** %t
	%1 = load %symb.SymbNode** %s
	%2 = getelementptr %symb.SymbNode* %1, i32 0, i32 1
	store %type.TypeNode* %0, %type.TypeNode** %2
	%3 = load %type.TypeNode** %t
	%4 = call %ast.AstNode* @ast_New(i8 5, %type.TypeNode* %3)
	store %ast.AstNode* %4, %ast.AstNode** %node
	%5 = load %ast.AstNode** %iv
	%6 = icmp ne %ast.AstNode* %5, null
	br i1 %6, label %L.2, label %L.1
L.2:
	%7 = load %ast.AstNode** %node
	%8 = load %ast.AstNode** %iv
	%9 = call %ast.AstNode* @ast_Child(%ast.AstNode* %7, %ast.AstNode* %8)
	store %ast.AstNode* %9, %ast.AstNode** %node
	br label %L.1
L.1:
	%10 = load %type.TypeNode** %t
	%11 = getelementptr %type.TypeNode* %10, i32 0, i32 10
	%12 = load i32* %11
	%13 = load %ast.AstNode** %node
	%14 = getelementptr %ast.AstNode* %13, i32 0, i32 7
	store i32 %12, i32* %14
	%15 = load %symb.SymbNode** %s
	%16 = load %ast.AstNode** %node
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 9
	store %symb.SymbNode* %15, %symb.SymbNode** %17
	%18 = load %ast.AstNode** %node
	store %ast.AstNode* %18, %ast.AstNode** %rv.0
	br label %return
return:
	%19 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %19
}
define internal %ast.AstNode* @stmt_VarDecl() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%stree = alloca %ast.AstNode*
	%iv = alloca %ast.AstNode*
	%tok = alloca i8
	%t = alloca %type.TypeNode*
	%s = alloca %symb.SymbNode*
	%ss = alloca %symb.SymbNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 41
	br i1 %2, label %L.2, label %L.1
L.2:
	%3 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%4 = call %symb.SymbNode* @symb_New(i8 3, [0 x i8]* %3, i8 0)
	store %symb.SymbNode* %4, %symb.SymbNode** %s
	%5 = load %symb.SymbNode** %s
	store %symb.SymbNode* %5, %symb.SymbNode** %ss
	%6 = call i8 @lex_Next()
	store i8 %6, i8* %tok
	br label %L.3
L.3:
	%7 = load i8* %tok
	%8 = icmp eq i8 %7, 5
	%9 = xor i1 %8, true
	br i1 %9, label %L.4, label %L.5
L.5:
	%10 = call i8 @lex_Next()
	store i8 %10, i8* %tok
	%11 = load i8* %tok
	%12 = icmp eq i8 %11, 41
	br i1 %12, label %L.7, label %L.8
L.7:
	%13 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%14 = call %symb.SymbNode* @symb_New(i8 3, [0 x i8]* %13, i8 0)
	store %symb.SymbNode* %14, %symb.SymbNode** %s
	%15 = call i8 @lex_Next()
	store i8 %15, i8* %tok
	br label %L.6
L.8:
	call void @lex_Error(i8 18)
	br label %L.6
L.6:
	br label %L.3
L.4:
	%16 = load i8* %tok
	%17 = icmp eq i8 %16, 3
	br i1 %17, label %L.10, label %L.11
L.10:
	%18 = call i8 @lex_Next()
	store i8 %18, i8* %tok
	%19 = load i8* %tok
	%20 = call %type.TypeNode* @type_Def(i8 %19, %type.TypeNode* null)
	store %type.TypeNode* %20, %type.TypeNode** %t
	%21 = load i8* @lex_Token
	store i8 %21, i8* %tok
	%22 = load i8* %tok
	%23 = icmp eq i8 %22, 3
	br i1 %23, label %L.13, label %L.12
L.13:
	%24 = load %symb.SymbNode** %s
	%25 = load %type.TypeNode** %t
	%26 = call %type.TypeNode* @type_VarAttributes(%symb.SymbNode* %24, %type.TypeNode* %25)
	store %type.TypeNode* %26, %type.TypeNode** %t
	br label %L.12
L.12:
	%27 = load %type.TypeNode** %t
	call void @type_Final(%type.TypeNode* %27)
	store %ast.AstNode* null, %ast.AstNode** %iv
	%28 = load i8* @lex_Token
	store i8 %28, i8* %tok
	%29 = load i8* %tok
	%30 = icmp eq i8 %29, 9
	br i1 %30, label %L.15, label %L.14
L.15:
	%31 = call i8 @lex_Next()
	store i8 %31, i8* %tok
	%32 = load %type.TypeNode** %t
	%33 = call %ast.AstNode* @expr_Const(%type.TypeNode* %32)
	store %ast.AstNode* %33, %ast.AstNode** %iv
	%34 = load %type.TypeNode** %t
	%35 = getelementptr %type.TypeNode* %34, i32 0, i32 25
	%36 = load i8* %35
	%37 = icmp ne i8 %36, 0
	br i1 %37, label %L.17, label %L.16
L.17:
	%38 = load %ast.AstNode** %iv
	%39 = getelementptr %ast.AstNode* %38, i32 0, i32 8
	%40 = load %type.TypeNode** %39
	store %type.TypeNode* %40, %type.TypeNode** %t
	br label %L.16
L.16:
	%41 = load %symb.SymbNode** %s
	%42 = getelementptr %symb.SymbNode* %41, i32 0, i32 17
	store i8 1, i8* %42
	br label %L.14
L.14:
	br label %L.9
L.11:
	%43 = load %type.TypeNode** @type_unkntype
	store %type.TypeNode* %43, %type.TypeNode** %t
	call void @lex_ErrorT(i8 17, i8 3)
	br label %L.9
L.9:
	%44 = load %symb.SymbNode** %ss
	%45 = getelementptr %symb.SymbNode* %44, i32 0, i32 0
	%46 = load %symb.SymbNode** %45
	%47 = icmp eq %symb.SymbNode* %46, null
	br i1 %47, label %L.19, label %L.20
L.19:
	%48 = load %symb.SymbNode** %ss
	%49 = load %type.TypeNode** %t
	%50 = load %ast.AstNode** %iv
	%51 = call %ast.AstNode* @stmt_VarNew(%symb.SymbNode* %48, %type.TypeNode* %49, %ast.AstNode* %50)
	store %ast.AstNode* %51, %ast.AstNode** %tree
	br label %L.18
L.20:
	%52 = call %ast.AstNode* @ast_New(i8 84, %type.TypeNode* null)
	store %ast.AstNode* %52, %ast.AstNode** %tree
	br label %L.21
L.21:
	%53 = load %symb.SymbNode** %ss
	%54 = load %type.TypeNode** %t
	%55 = load %ast.AstNode** %iv
	%56 = call %ast.AstNode* @stmt_VarNew(%symb.SymbNode* %53, %type.TypeNode* %54, %ast.AstNode* %55)
	store %ast.AstNode* %56, %ast.AstNode** %stree
	%57 = load %ast.AstNode** %tree
	%58 = load %ast.AstNode** %stree
	%59 = call %ast.AstNode* @ast_Child(%ast.AstNode* %57, %ast.AstNode* %58)
	store %ast.AstNode* %59, %ast.AstNode** %tree
	%60 = load %symb.SymbNode** %ss
	%61 = load %symb.SymbNode** %s
	%62 = icmp eq %symb.SymbNode* %60, %61
	br i1 %62, label %L.25, label %L.24
L.24:
	%63 = load %symb.SymbNode** %ss
	%64 = getelementptr %symb.SymbNode* %63, i32 0, i32 0
	%65 = load %symb.SymbNode** %64
	%66 = icmp eq %symb.SymbNode* %65, null
	br label %L.25
L.25:
	%67 = phi i1 [ true, %L.21 ], [ %66, %L.24 ]
	br i1 %67, label %L.22, label %L.23
L.23:
	%68 = load %symb.SymbNode** %ss
	%69 = getelementptr %symb.SymbNode* %68, i32 0, i32 0
	%70 = load %symb.SymbNode** %69
	%71 = bitcast %symb.SymbNode* %70 to %symb.SymbNode*
	store %symb.SymbNode* %71, %symb.SymbNode** %ss
	br label %L.21
L.22:
	br label %L.18
L.18:
	%72 = call i8 @lex_Expect(i8 4)
	store i8 %72, i8* %tok
	br label %L.1
L.1:
	%73 = load %ast.AstNode** %tree
	store %ast.AstNode* %73, %ast.AstNode** %rv.0
	br label %return
return:
	%74 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %74
}
define internal %ast.AstNode* @stmt_ConstDecl() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%s = alloca %symb.SymbNode*
	%t = alloca %type.TypeNode*
	%tok = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 41
	br i1 %2, label %L.2, label %L.3
L.2:
	%3 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%4 = call %symb.SymbNode* @symb_New(i8 1, [0 x i8]* %3, i8 0)
	store %symb.SymbNode* %4, %symb.SymbNode** %s
	%5 = call i8 @lex_Next()
	store i8 %5, i8* %tok
	store %type.TypeNode* null, %type.TypeNode** %t
	%6 = load i8* %tok
	%7 = icmp eq i8 %6, 3
	br i1 %7, label %L.5, label %L.4
L.5:
	%8 = call i8 @lex_Next()
	store i8 %8, i8* %tok
	%9 = load i8* %tok
	%10 = call %type.TypeNode* @type_Def(i8 %9, %type.TypeNode* null)
	store %type.TypeNode* %10, %type.TypeNode** %t
	%11 = load i8* @lex_Token
	store i8 %11, i8* %tok
	%12 = load i8* %tok
	%13 = icmp eq i8 %12, 3
	br i1 %13, label %L.7, label %L.6
L.7:
	%14 = load %type.TypeNode** %t
	%15 = call %type.TypeNode* @type_TypeAttributes(%type.TypeNode* %14)
	store %type.TypeNode* %15, %type.TypeNode** %t
	%16 = load i8* @lex_Token
	store i8 %16, i8* %tok
	br label %L.6
L.6:
	%17 = load %type.TypeNode** %t
	call void @type_Final(%type.TypeNode* %17)
	br label %L.4
L.4:
	%18 = load i8* %tok
	%19 = icmp eq i8 %18, 9
	br i1 %19, label %L.9, label %L.10
L.9:
	%20 = call i8 @lex_Next()
	store i8 %20, i8* %tok
	%21 = load %type.TypeNode** %t
	%22 = call %ast.AstNode* @expr_Const(%type.TypeNode* %21)
	store %ast.AstNode* %22, %ast.AstNode** %tree
	%23 = load %ast.AstNode** %tree
	%24 = icmp ne %ast.AstNode* %23, null
	br i1 %24, label %L.12, label %L.11
L.12:
	%25 = load %type.TypeNode** %t
	%26 = icmp eq %type.TypeNode* %25, null
	br i1 %26, label %L.14, label %L.15
L.14:
	%27 = load %ast.AstNode** %tree
	%28 = getelementptr %ast.AstNode* %27, i32 0, i32 8
	%29 = load %type.TypeNode** %28
	store %type.TypeNode* %29, %type.TypeNode** %t
	br label %L.13
L.15:
	%30 = load %type.TypeNode** %t
	%31 = getelementptr %type.TypeNode* %30, i32 0, i32 25
	%32 = load i8* %31
	%33 = icmp ne i8 %32, 0
	br i1 %33, label %L.17, label %L.18
L.17:
	%34 = load %ast.AstNode** %tree
	%35 = getelementptr %ast.AstNode* %34, i32 0, i32 8
	%36 = load %type.TypeNode** %35
	store %type.TypeNode* %36, %type.TypeNode** %t
	br label %L.16
L.18:
	%37 = load %ast.AstNode** %tree
	%38 = getelementptr %ast.AstNode* %37, i32 0, i32 0
	%39 = load i8* %38
	%40 = icmp eq i8 %39, 9
	br i1 %40, label %L.19, label %L.20
L.19:
	%41 = load %type.TypeNode** %t
	%42 = getelementptr %type.TypeNode* %41, i32 0, i32 8
	%43 = load i64* %42
	%44 = load %ast.AstNode** %tree
	%45 = getelementptr %ast.AstNode* %44, i32 0, i32 8
	%46 = load %type.TypeNode** %45
	%47 = getelementptr %type.TypeNode* %46, i32 0, i32 8
	%48 = load i64* %47
	%49 = sub i64 %48, 1
	%50 = icmp eq i64 %43, %49
	br label %L.20
L.20:
	%51 = phi i1 [ false, %L.18 ], [ %50, %L.19 ]
	br i1 %51, label %L.22, label %L.23
L.22:
	%52 = load %ast.AstNode** %tree
	%53 = call %ast.AstNode* @ast_Dup(%ast.AstNode* %52)
	store %ast.AstNode* %53, %ast.AstNode** %tree
	%54 = load %type.TypeNode** %t
	%55 = load %ast.AstNode** %tree
	%56 = getelementptr %ast.AstNode* %55, i32 0, i32 8
	store %type.TypeNode* %54, %type.TypeNode** %56
	br label %L.21
L.23:
	%57 = load %type.TypeNode** %t
	%58 = load %ast.AstNode** %tree
	%59 = getelementptr %ast.AstNode* %58, i32 0, i32 8
	%60 = load %type.TypeNode** %59
	%61 = icmp ne %type.TypeNode* %57, %60
	br i1 %61, label %L.25, label %L.24
L.25:
	%62 = load %ast.AstNode** %tree
	%63 = call %ast.AstNode* @ast_Dup(%ast.AstNode* %62)
	store %ast.AstNode* %63, %ast.AstNode** %tree
	%64 = load %type.TypeNode** %t
	%65 = load %ast.AstNode** %tree
	%66 = getelementptr %ast.AstNode* %65, i32 0, i32 8
	store %type.TypeNode* %64, %type.TypeNode** %66
	br label %L.24
L.24:
	br label %L.21
L.21:
	br label %L.16
L.16:
	br label %L.13
L.13:
	%67 = load %ast.AstNode** %tree
	%68 = bitcast %ast.AstNode* %67 to %ast.AstNode*
	%69 = load %symb.SymbNode** %s
	%70 = getelementptr %symb.SymbNode* %69, i32 0, i32 8
	store %ast.AstNode* %68, %ast.AstNode** %70
	%71 = load %type.TypeNode** %t
	%72 = load %ast.AstNode** %tree
	%73 = call %ast.AstNode* @ast_New1(i8 6, %type.TypeNode* %71, %ast.AstNode* %72)
	store %ast.AstNode* %73, %ast.AstNode** %tree
	%74 = load %symb.SymbNode** %s
	%75 = load %ast.AstNode** %tree
	%76 = getelementptr %ast.AstNode* %75, i32 0, i32 9
	store %symb.SymbNode* %74, %symb.SymbNode** %76
	br label %L.11
L.11:
	%77 = load %symb.SymbNode** %s
	%78 = getelementptr %symb.SymbNode* %77, i32 0, i32 17
	store i8 1, i8* %78
	br label %L.8
L.10:
	call void @lex_Error(i8 71)
	br label %L.8
L.8:
	%79 = load %type.TypeNode** %t
	%80 = load %symb.SymbNode** %s
	%81 = getelementptr %symb.SymbNode* %80, i32 0, i32 1
	store %type.TypeNode* %79, %type.TypeNode** %81
	br label %L.1
L.3:
	call void @lex_Error(i8 18)
	br label %L.1
L.1:
	%82 = call i8 @lex_Expect(i8 4)
	store i8 %82, i8* %tok
	%83 = load %ast.AstNode** %tree
	store %ast.AstNode* %83, %ast.AstNode** %rv.0
	br label %return
return:
	%84 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %84
}
define internal zeroext i16 @stmt_EndConstraint([0 x i8]* %what$, i16 zeroext %i$) nounwind {
L.0:
	%rv.0 = alloca i16
	%what = alloca [0 x i8]*
	%i = alloca i16
	store [0 x i8]* %what$, [0 x i8]** %what
	store i16 %i$, i16* %i
	br label %L.1
L.1:
	%0 = load i16* %i
	%1 = add i16 %0, 1
	store i16 %1, i16* %i
	%2 = load [0 x i8]** %what
	%3 = load i16* %i
	%4 = zext i16 %3 to i32
	%5 = getelementptr [0 x i8]* %2, i32 0, i32 %4
	%6 = load i8* %5
	%7 = icmp eq i8 %6, 125
	br i1 %7, label %L.2, label %L.3
L.3:
	br label %L.1
L.2:
	%8 = load i16* %i
	store i16 %8, i16* %rv.0
	br label %return
return:
	%9 = load i16* %rv.0
	ret i16 %9
}
@stmt_Asm_MaxArg = internal constant i32 9, align 4
@S.601 = internal constant [18 x i8] c"'~' in constraint\00"
define internal %ast.AstNode* @stmt_Asm() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%node = alloca %ast.AstNode*
	%temp = alloca %ast.AstNode*
	%narg = alloca i16
	%nout = alloca i16
	%tok = alloca i8
	%what = alloca [0 x i8]*
	%i = alloca i16
	%na = alloca i8
	%no = alloca i8
	%constraints = alloca [10 x i8]
	%outputs = alloca [10 x %ast.AstNode*]
	%tlhead = alloca %type.TypeListEntry*
	%tltail = alloca %type.TypeListEntry*
	%tl = alloca %type.TypeListEntry*
	%0 = call %ast.AstNode* @ast_New(i8 20, %type.TypeNode* null)
	store %ast.AstNode* %0, %ast.AstNode** %tree
	%1 = load i8* @lex_Token
	store i8 %1, i8* %tok
	%2 = load i8* %tok
	%3 = icmp eq i8 %2, 40
	br i1 %3, label %L.2, label %L.3
L.2:
	%4 = load %ast.AstNode** %tree
	%5 = call %ast.AstNode* @expr_String()
	%6 = call %ast.AstNode* @ast_Child(%ast.AstNode* %4, %ast.AstNode* %5)
	store %ast.AstNode* %6, %ast.AstNode** %tree
	%7 = load i8* @lex_Token
	store i8 %7, i8* %tok
	%8 = load i8* %tok
	%9 = icmp eq i8 %8, 5
	br i1 %9, label %L.5, label %L.4
L.5:
	%10 = call i8 @lex_Next()
	store i8 %10, i8* %tok
	store i16 0, i16* %narg
	store i16 0, i16* %nout
	%11 = load i8* %tok
	%12 = icmp eq i8 %11, 40
	br i1 %12, label %L.7, label %L.8
L.7:
	%13 = call %ast.AstNode* @expr_String()
	store %ast.AstNode* %13, %ast.AstNode** %node
	%14 = load %ast.AstNode** %node
	%15 = getelementptr %ast.AstNode* %14, i32 0, i32 9
	%16 = load %symb.SymbNode** %15
	%17 = getelementptr %symb.SymbNode* %16, i32 0, i32 22
	%18 = getelementptr [0 x i8]* %17
	%19 = bitcast [0 x i8]* %18 to [0 x i8]*
	store [0 x i8]* %19, [0 x i8]** %what
	%20 = load %ast.AstNode** %tree
	%21 = load %ast.AstNode** %node
	%22 = call %ast.AstNode* @ast_Child(%ast.AstNode* %20, %ast.AstNode* %21)
	store %ast.AstNode* %22, %ast.AstNode** %tree
	%23 = load i8* @lex_Token
	store i8 %23, i8* %tok
	store i16 0, i16* %i
	br label %L.9
L.9:
	%24 = load [0 x i8]** %what
	%25 = load i16* %i
	%26 = zext i16 %25 to i32
	%27 = getelementptr [0 x i8]* %24, i32 0, i32 %26
	%28 = load i8* %27
	%29 = icmp ne i8 %28, 0
	br i1 %29, label %L.12, label %L.13
L.12:
	%30 = load i16* %narg
	%31 = icmp ult i16 %30, 8
	br label %L.13
L.13:
	%32 = phi i1 [ false, %L.9 ], [ %31, %L.12 ]
	%33 = xor i1 %32, true
	br i1 %33, label %L.10, label %L.11
L.11:
	%34 = load [0 x i8]** %what
	%35 = load i16* %i
	%36 = zext i16 %35 to i32
	%37 = getelementptr [0 x i8]* %34, i32 0, i32 %36
	%38 = load i8* %37
	%39 = zext i8 %38 to i32
	switch i32 %39, label %L.14 [
		i32 61, label %L.16
		i32 48, label %L.17
		i32 49, label %L.17
		i32 50, label %L.17
		i32 51, label %L.17
		i32 52, label %L.17
		i32 53, label %L.17
		i32 54, label %L.17
		i32 55, label %L.17
		i32 56, label %L.17
		i32 57, label %L.17
		i32 126, label %L.18
	]
L.16:
	%40 = load i16* %i
	%41 = add i16 %40, 1
	store i16 %41, i16* %i
	%42 = load [0 x i8]** %what
	%43 = load i16* %i
	%44 = zext i16 %43 to i32
	%45 = getelementptr [0 x i8]* %42, i32 0, i32 %44
	%46 = load i8* %45
	%47 = icmp eq i8 %46, 123
	br i1 %47, label %L.20, label %L.19
L.20:
	%48 = load [0 x i8]** %what
	%49 = bitcast [0 x i8]* %48 to [0 x i8]*
	%50 = load i16* %i
	%51 = call i16 @stmt_EndConstraint([0 x i8]* %49, i16 %50)
	store i16 %51, i16* %i
	br label %L.19
L.19:
	%52 = load i16* %nout
	%53 = add i16 %52, 1
	store i16 %53, i16* %nout
	%54 = load i16* %narg
	%55 = zext i16 %54 to i32
	%56 = getelementptr [10 x i8]* %constraints, i32 0, i32 %55
	store i8 11, i8* %56
	%57 = load i16* %narg
	%58 = add i16 %57, 1
	store i16 %58, i16* %narg
	br label %L.15
L.17:
	%59 = load [0 x i8]** %what
	%60 = load i16* %i
	%61 = zext i16 %60 to i32
	%62 = getelementptr [0 x i8]* %59, i32 0, i32 %61
	%63 = load i8* %62
	%64 = sub i8 %63, 48
	%65 = load i16* %narg
	%66 = zext i16 %65 to i32
	%67 = getelementptr [10 x i8]* %constraints, i32 0, i32 %66
	store i8 %64, i8* %67
	%68 = load i16* %narg
	%69 = add i16 %68, 1
	store i16 %69, i16* %narg
	br label %L.15
L.18:
	%70 = getelementptr [18 x i8]* @S.601
	%71 = bitcast [18 x i8]* %70 to [0 x i8]*
	call void @lex_ErrorS(i8 0, [0 x i8]* %71)
	%72 = load [0 x i8]** %what
	%73 = load i16* %i
	%74 = zext i16 %73 to i32
	%75 = getelementptr [0 x i8]* %72, i32 0, i32 %74
	%76 = load i8* %75
	%77 = icmp eq i8 %76, 123
	br i1 %77, label %L.22, label %L.21
L.22:
	%78 = load [0 x i8]** %what
	%79 = bitcast [0 x i8]* %78 to [0 x i8]*
	%80 = load i16* %i
	%81 = call i16 @stmt_EndConstraint([0 x i8]* %79, i16 %80)
	store i16 %81, i16* %i
	br label %L.21
L.21:
	br label %L.15
L.14:
	%82 = load [0 x i8]** %what
	%83 = load i16* %i
	%84 = zext i16 %83 to i32
	%85 = getelementptr [0 x i8]* %82, i32 0, i32 %84
	%86 = load i8* %85
	%87 = icmp eq i8 %86, 123
	br i1 %87, label %L.24, label %L.23
L.24:
	%88 = load [0 x i8]** %what
	%89 = bitcast [0 x i8]* %88 to [0 x i8]*
	%90 = load i16* %i
	%91 = call i16 @stmt_EndConstraint([0 x i8]* %89, i16 %90)
	store i16 %91, i16* %i
	br label %L.23
L.23:
	%92 = load i16* %narg
	%93 = zext i16 %92 to i32
	%94 = getelementptr [10 x i8]* %constraints, i32 0, i32 %93
	store i8 10, i8* %94
	%95 = load i16* %narg
	%96 = add i16 %95, 1
	store i16 %96, i16* %narg
	br label %L.15
L.15:
	%97 = load i16* %i
	%98 = add i16 %97, 1
	store i16 %98, i16* %i
	%99 = load [0 x i8]** %what
	%100 = load i16* %i
	%101 = zext i16 %100 to i32
	%102 = getelementptr [0 x i8]* %99, i32 0, i32 %101
	%103 = load i8* %102
	%104 = icmp ne i8 %103, 44
	br i1 %104, label %L.10, label %L.25
L.25:
	%105 = load i16* %i
	%106 = add i16 %105, 1
	store i16 %106, i16* %i
	br label %L.9
L.10:
	br label %L.6
L.8:
	call void @lex_ErrorT(i8 17, i8 40)
	br label %L.6
L.6:
	store i8 0, i8* %na
	store i8 0, i8* %no
	br label %L.26
L.26:
	%107 = load i8* %na
	%108 = zext i8 %107 to i16
	%109 = load i16* %narg
	%110 = icmp ult i16 %108, %109
	%111 = xor i1 %110, true
	br i1 %111, label %L.27, label %L.28
L.28:
	%112 = load i8* %na
	%113 = zext i8 %112 to i32
	%114 = getelementptr [10 x i8]* %constraints, i32 0, i32 %113
	%115 = load i8* %114
	%116 = icmp ult i8 %115, 10
	br i1 %116, label %L.30, label %L.31
L.30:
	%117 = load i8* %na
	%118 = zext i8 %117 to i32
	%119 = getelementptr [10 x i8]* %constraints, i32 0, i32 %118
	%120 = load i8* %119
	%121 = zext i8 %120 to i32
	%122 = getelementptr [10 x %ast.AstNode*]* %outputs, i32 0, i32 %121
	%123 = load %ast.AstNode** %122
	%124 = call %ast.AstNode* @expr_Load(%ast.AstNode* %123)
	store %ast.AstNode* %124, %ast.AstNode** %node
	%125 = load %ast.AstNode** %tree
	%126 = load %ast.AstNode** %node
	%127 = call %ast.AstNode* @ast_Child(%ast.AstNode* %125, %ast.AstNode* %126)
	store %ast.AstNode* %127, %ast.AstNode** %tree
	br label %L.29
L.31:
	%128 = load i8* %tok
	%129 = icmp eq i8 %128, 5
	br i1 %129, label %L.33, label %L.34
L.33:
	%130 = call i8 @lex_Next()
	store i8 %130, i8* %tok
	%131 = load i8* %na
	%132 = zext i8 %131 to i32
	%133 = getelementptr [10 x i8]* %constraints, i32 0, i32 %132
	%134 = load i8* %133
	%135 = icmp eq i8 %134, 11
	br i1 %135, label %L.36, label %L.37
L.36:
	%136 = call %ast.AstNode* @expr_GetLHS()
	%137 = load i8* %no
	%138 = zext i8 %137 to i32
	%139 = getelementptr [10 x %ast.AstNode*]* %outputs, i32 0, i32 %138
	store %ast.AstNode* %136, %ast.AstNode** %139
	%140 = load i8* %no
	%141 = add i8 %140, 1
	store i8 %141, i8* %no
	br label %L.35
L.37:
	%142 = call %ast.AstNode* @expr_Bool(%type.TypeNode* null)
	store %ast.AstNode* %142, %ast.AstNode** %node
	%143 = load %ast.AstNode** %tree
	%144 = load %ast.AstNode** %node
	%145 = call %ast.AstNode* @ast_Child(%ast.AstNode* %143, %ast.AstNode* %144)
	store %ast.AstNode* %145, %ast.AstNode** %tree
	br label %L.35
L.35:
	%146 = load i8* @lex_Token
	store i8 %146, i8* %tok
	br label %L.32
L.34:
	call void @lex_ErrorT(i8 17, i8 5)
	br label %L.32
L.32:
	br label %L.29
L.29:
	%147 = load i8* %na
	%148 = add i8 %147, 1
	store i8 %148, i8* %na
	br label %L.26
L.27:
	store %type.TypeListEntry* null, %type.TypeListEntry** %tlhead
	store %type.TypeListEntry* null, %type.TypeListEntry** %tltail
	store i8 0, i8* %no
	br label %L.38
L.38:
	%149 = load i8* %no
	%150 = zext i8 %149 to i16
	%151 = load i16* %nout
	%152 = icmp ult i16 %150, %151
	%153 = xor i1 %152, true
	br i1 %153, label %L.39, label %L.40
L.40:
	%154 = call [0 x i8]* @sys_zalloc(i32 8)
	%155 = bitcast [0 x i8]* %154 to %type.TypeListEntry*
	store %type.TypeListEntry* %155, %type.TypeListEntry** %tl
	%156 = load i8* %no
	%157 = zext i8 %156 to i32
	%158 = getelementptr [10 x %ast.AstNode*]* %outputs, i32 0, i32 %157
	%159 = load %ast.AstNode** %158
	%160 = getelementptr %ast.AstNode* %159, i32 0, i32 8
	%161 = load %type.TypeNode** %160
	%162 = getelementptr %type.TypeNode* %161, i32 0, i32 0
	%163 = load %type.TypeNode** %162
	%164 = bitcast %type.TypeNode* %163 to %type.TypeNode*
	%165 = load %type.TypeListEntry** %tl
	%166 = getelementptr %type.TypeListEntry* %165, i32 0, i32 1
	store %type.TypeNode* %164, %type.TypeNode** %166
	%167 = load %type.TypeListEntry** %tltail
	%168 = icmp eq %type.TypeListEntry* %167, null
	br i1 %168, label %L.42, label %L.43
L.42:
	%169 = load %type.TypeListEntry** %tl
	store %type.TypeListEntry* %169, %type.TypeListEntry** %tlhead
	br label %L.41
L.43:
	%170 = load %type.TypeListEntry** %tl
	%171 = bitcast %type.TypeListEntry* %170 to %type.TypeListEntry*
	%172 = load %type.TypeListEntry** %tltail
	%173 = getelementptr %type.TypeListEntry* %172, i32 0, i32 0
	store %type.TypeListEntry* %171, %type.TypeListEntry** %173
	br label %L.41
L.41:
	%174 = load %type.TypeListEntry** %tl
	store %type.TypeListEntry* %174, %type.TypeListEntry** %tltail
	%175 = load i8* %no
	%176 = add i8 %175, 1
	store i8 %176, i8* %no
	br label %L.38
L.39:
	%177 = load %type.TypeListEntry** %tlhead
	%178 = bitcast %type.TypeListEntry* %177 to %type.TypeNode*
	%179 = load %ast.AstNode** %tree
	%180 = getelementptr %ast.AstNode* %179, i32 0, i32 8
	store %type.TypeNode* %178, %type.TypeNode** %180
	%181 = load i16* %nout
	%182 = icmp ugt i16 %181, 0
	br i1 %182, label %L.45, label %L.44
L.45:
	%183 = load %ast.AstNode** %tree
	store %ast.AstNode* %183, %ast.AstNode** %node
	%184 = call %ast.AstNode* @ast_New(i8 28, %type.TypeNode* null)
	store %ast.AstNode* %184, %ast.AstNode** %tree
	store i8 0, i8* %no
	br label %L.46
L.46:
	%185 = load i8* %no
	%186 = zext i8 %185 to i16
	%187 = load i16* %nout
	%188 = icmp ult i16 %186, %187
	%189 = xor i1 %188, true
	br i1 %189, label %L.47, label %L.48
L.48:
	%190 = load %ast.AstNode** %tree
	%191 = load i8* %no
	%192 = zext i8 %191 to i32
	%193 = getelementptr [10 x %ast.AstNode*]* %outputs, i32 0, i32 %192
	%194 = load %ast.AstNode** %193
	%195 = call %ast.AstNode* @ast_Child(%ast.AstNode* %190, %ast.AstNode* %194)
	store %ast.AstNode* %195, %ast.AstNode** %tree
	%196 = load i8* %no
	%197 = add i8 %196, 1
	store i8 %197, i8* %no
	br label %L.46
L.47:
	%198 = load i16* %nout
	%199 = icmp ugt i16 %198, 1
	br i1 %199, label %L.50, label %L.51
L.50:
	store i8 0, i8* %no
	br label %L.52
L.52:
	%200 = load i8* %no
	%201 = zext i8 %200 to i16
	%202 = load i16* %nout
	%203 = icmp ult i16 %201, %202
	%204 = xor i1 %203, true
	br i1 %204, label %L.53, label %L.54
L.54:
	%205 = load i8* %no
	%206 = zext i8 %205 to i32
	%207 = getelementptr [10 x %ast.AstNode*]* %outputs, i32 0, i32 %206
	%208 = load %ast.AstNode** %207
	%209 = getelementptr %ast.AstNode* %208, i32 0, i32 8
	%210 = load %type.TypeNode** %209
	%211 = getelementptr %type.TypeNode* %210, i32 0, i32 0
	%212 = load %type.TypeNode** %211
	%213 = bitcast %type.TypeNode* %212 to %type.TypeNode*
	%214 = load %ast.AstNode** %node
	%215 = call %ast.AstNode* @ast_New1(i8 26, %type.TypeNode* %213, %ast.AstNode* %214)
	store %ast.AstNode* %215, %ast.AstNode** %temp
	%216 = load %ast.AstNode** %temp
	%217 = getelementptr %ast.AstNode* %216, i32 0, i32 8
	%218 = load %type.TypeNode** %217
	%219 = getelementptr %type.TypeNode* %218, i32 0, i32 10
	%220 = load i32* %219
	%221 = load %ast.AstNode** %temp
	%222 = getelementptr %ast.AstNode* %221, i32 0, i32 7
	store i32 %220, i32* %222
	%223 = load i8* %no
	%224 = zext i8 %223 to i64
	%225 = load %ast.AstNode** %temp
	%226 = getelementptr %ast.AstNode* %225, i32 0, i32 10
	store i64 %224, i64* %226
	%227 = load %ast.AstNode** %tree
	%228 = load %ast.AstNode** %temp
	%229 = call %ast.AstNode* @ast_Child(%ast.AstNode* %227, %ast.AstNode* %228)
	store %ast.AstNode* %229, %ast.AstNode** %tree
	%230 = load i8* %no
	%231 = add i8 %230, 1
	store i8 %231, i8* %no
	br label %L.52
L.53:
	br label %L.49
L.51:
	%232 = getelementptr [10 x %ast.AstNode*]* %outputs, i32 0, i32 0
	%233 = load %ast.AstNode** %232
	%234 = getelementptr %ast.AstNode* %233, i32 0, i32 8
	%235 = load %type.TypeNode** %234
	%236 = getelementptr %type.TypeNode* %235, i32 0, i32 0
	%237 = load %type.TypeNode** %236
	%238 = bitcast %type.TypeNode* %237 to %type.TypeNode*
	%239 = load %ast.AstNode** %node
	%240 = call %ast.AstNode* @ast_New1(i8 1, %type.TypeNode* %238, %ast.AstNode* %239)
	store %ast.AstNode* %240, %ast.AstNode** %temp
	%241 = load %ast.AstNode** %temp
	%242 = getelementptr %ast.AstNode* %241, i32 0, i32 8
	%243 = load %type.TypeNode** %242
	%244 = getelementptr %type.TypeNode* %243, i32 0, i32 10
	%245 = load i32* %244
	%246 = load %ast.AstNode** %temp
	%247 = getelementptr %ast.AstNode* %246, i32 0, i32 7
	store i32 %245, i32* %247
	%248 = load %ast.AstNode** %tree
	%249 = load %ast.AstNode** %temp
	%250 = call %ast.AstNode* @ast_Child(%ast.AstNode* %248, %ast.AstNode* %249)
	store %ast.AstNode* %250, %ast.AstNode** %tree
	br label %L.49
L.49:
	br label %L.44
L.44:
	br label %L.4
L.4:
	br label %L.1
L.3:
	call void @lex_ErrorT(i8 17, i8 40)
	br label %L.1
L.1:
	%251 = load %ast.AstNode** %tree
	store %ast.AstNode* %251, %ast.AstNode** %rv.0
	br label %return
return:
	%252 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %252
}
define internal %ast.AstNode* @stmt_CheckSwap(%ast.AstNode* %lhs$, %ast.AstNode* %rhs$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%lhs = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	store %ast.AstNode* %lhs$, %ast.AstNode** %lhs
	store %ast.AstNode* %rhs$, %ast.AstNode** %rhs
	%0 = load %ast.AstNode** %lhs
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 0
	%4 = load %type.TypeNode** %3
	%5 = bitcast %type.TypeNode* %4 to %type.TypeNode*
	%6 = load %target.ModelT** @target_Target
	%7 = getelementptr %target.ModelT* %6, i32 0, i32 0
	%8 = load i8* %7
	%9 = call i8 @type_NeedSwap(%type.TypeNode* %5, i8 %8)
	%10 = icmp ne i8 %9, 0
	br i1 %10, label %L.2, label %L.1
L.2:
	%11 = load %ast.AstNode** %rhs
	%12 = getelementptr %ast.AstNode* %11, i32 0, i32 8
	%13 = load %type.TypeNode** %12
	%14 = load %ast.AstNode** %rhs
	%15 = call %ast.AstNode* @ast_New1(i8 32, %type.TypeNode* %13, %ast.AstNode* %14)
	store %ast.AstNode* %15, %ast.AstNode** %rhs
	br label %L.1
L.1:
	%16 = load %ast.AstNode** %rhs
	store %ast.AstNode* %16, %ast.AstNode** %rv.0
	br label %return
return:
	%17 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %17
}
define internal %ast.AstNode* @stmt_AssignRecord(%ast.AstNode* %lhs$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%lhs = alloca %ast.AstNode*
	store %ast.AstNode* %lhs$, %ast.AstNode** %lhs
	%tree = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	%0 = load %ast.AstNode** %lhs
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 0
	%4 = load %type.TypeNode** %3
	%5 = bitcast %type.TypeNode* %4 to %type.TypeNode*
	store %type.TypeNode* %5, %type.TypeNode** %t
	%6 = load %type.TypeNode** %t
	%7 = call %ast.AstNode* @expr_Term(%type.TypeNode* %6)
	store %ast.AstNode* %7, %ast.AstNode** %tree
	%8 = load %ast.AstNode** %tree
	%9 = icmp eq %ast.AstNode* %8, null
	br i1 %9, label %L.2, label %L.1
L.2:
	store %ast.AstNode* null, %ast.AstNode** %rv.0
	br label %return
L.1:
	%10 = load %type.TypeNode** %t
	%11 = getelementptr %type.TypeNode* %10, i32 0, i32 21
	%12 = load i8* %11
	%13 = icmp ne i8 %12, 0
	br i1 %13, label %L.4, label %L.5
L.4:
	%14 = load %ast.AstNode** %lhs
	%15 = load %ast.AstNode** %tree
	%16 = call %ast.AstNode* @stmt_CheckSwap(%ast.AstNode* %14, %ast.AstNode* %15)
	store %ast.AstNode* %16, %ast.AstNode** %tree
	br label %L.3
L.5:
	%17 = load %ast.AstNode** %tree
	%18 = getelementptr %ast.AstNode* %17, i32 0, i32 0
	%19 = load i8* %18
	%20 = icmp eq i8 %19, 10
	br i1 %20, label %L.7, label %L.6
L.7:
	%21 = load %ast.AstNode** %tree
	%22 = getelementptr %ast.AstNode* %21, i32 0, i32 8
	%23 = load %type.TypeNode** %22
	%24 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %23)
	%25 = load %ast.AstNode** %tree
	%26 = call %ast.AstNode* @ast_New1(i8 16, %type.TypeNode* %24, %ast.AstNode* %25)
	store %ast.AstNode* %26, %ast.AstNode** %tree
	%27 = load %ast.AstNode** %tree
	%28 = getelementptr %ast.AstNode* %27, i32 0, i32 8
	%29 = load %type.TypeNode** %28
	%30 = getelementptr %type.TypeNode* %29, i32 0, i32 0
	%31 = load %type.TypeNode** %30
	%32 = bitcast %type.TypeNode* %31 to %type.TypeNode*
	%33 = load %ast.AstNode** %tree
	%34 = call %ast.AstNode* @ast_New1(i8 27, %type.TypeNode* %32, %ast.AstNode* %33)
	store %ast.AstNode* %34, %ast.AstNode** %tree
	br label %L.6
L.6:
	br label %L.3
L.3:
	%35 = load %ast.AstNode** %lhs
	%36 = load %ast.AstNode** %tree
	%37 = call %ast.AstNode* @ast_New2(i8 28, %type.TypeNode* null, %ast.AstNode* %35, %ast.AstNode* %36)
	store %ast.AstNode* %37, %ast.AstNode** %tree
	%38 = load %ast.AstNode** %tree
	store %ast.AstNode* %38, %ast.AstNode** %rv.0
	br label %return
return:
	%39 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %39
}
define internal %ast.AstNode* @stmt_ArrayFix(%ast.AstNode* %tree$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	%at = alloca %type.TypeNode*
	%0 = load %ast.AstNode** %tree
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 0
	%2 = load i8* %1
	%3 = zext i8 %2 to i32
	switch i32 %3, label %L.1 [
		i32 12, label %L.3
		i32 10, label %L.4
	]
L.3:
	%4 = load %ast.AstNode** %tree
	%5 = getelementptr %ast.AstNode* %4, i32 0, i32 8
	%6 = load %type.TypeNode** %5
	%7 = load %ast.AstNode** %tree
	%8 = call %ast.AstNode* @ast_New1(i8 16, %type.TypeNode* %6, %ast.AstNode* %7)
	store %ast.AstNode* %8, %ast.AstNode** %tree
	br label %L.2
L.4:
	br label %L.2
L.1:
	br label %L.2
L.2:
	%9 = load %ast.AstNode** %tree
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 8
	%11 = load %type.TypeNode** %10
	%12 = getelementptr %type.TypeNode* %11, i32 0, i32 0
	%13 = load %type.TypeNode** %12
	%14 = bitcast %type.TypeNode* %13 to %type.TypeNode*
	store %type.TypeNode* %14, %type.TypeNode** %at
	%15 = load %type.TypeNode** %at
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 0
	%17 = load %type.TypeNode** %16
	%18 = load %type.TypeNode** @type_bytetype
	%19 = icmp ne %type.TypeNode* %17, %18
	br i1 %19, label %L.6, label %L.5
L.5:
	%20 = load %type.TypeNode** %at
	%21 = getelementptr %type.TypeNode* %20, i32 0, i32 25
	%22 = load i8* %21
	%23 = icmp ne i8 %22, 0
	%24 = xor i1 %23, true
	br label %L.6
L.6:
	%25 = phi i1 [ true, %L.2 ], [ %24, %L.5 ]
	br i1 %25, label %L.8, label %L.7
L.8:
	%26 = load %type.TypeNode** @type_memtype
	%27 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %26)
	%28 = load %ast.AstNode** %tree
	%29 = call %ast.AstNode* @ast_New1(i8 17, %type.TypeNode* %27, %ast.AstNode* %28)
	store %ast.AstNode* %29, %ast.AstNode** %tree
	br label %L.7
L.7:
	%30 = load %ast.AstNode** %tree
	store %ast.AstNode* %30, %ast.AstNode** %rv.0
	br label %return
return:
	%31 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %31
}
@S.602 = internal constant [20 x i8] c"packed array slices\00"
define internal %ast.AstNode* @stmt_AssignArray(%ast.AstNode* %lhs$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%lhs = alloca %ast.AstNode*
	store %ast.AstNode* %lhs$, %ast.AstNode** %lhs
	%tree = alloca %ast.AstNode*
	%lsize = alloca %ast.AstNode*
	%rsize = alloca %ast.AstNode*
	%align = alloca %ast.AstNode*
	%lalign = alloca i32
	%ralign = alloca i32
	%width = alloca i32
	%t = alloca %type.TypeNode*
	%0 = load %ast.AstNode** %lhs
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 0
	%4 = load %type.TypeNode** %3
	%5 = bitcast %type.TypeNode* %4 to %type.TypeNode*
	store %type.TypeNode* %5, %type.TypeNode** %t
	%6 = load %type.TypeNode** %t
	%7 = call %ast.AstNode* @expr_Term(%type.TypeNode* %6)
	store %ast.AstNode* %7, %ast.AstNode** %tree
	%8 = load %ast.AstNode** %tree
	%9 = icmp eq %ast.AstNode* %8, null
	br i1 %9, label %L.2, label %L.1
L.2:
	store %ast.AstNode* null, %ast.AstNode** %rv.0
	br label %return
L.1:
	%10 = load %ast.AstNode** %tree
	%11 = getelementptr %ast.AstNode* %10, i32 0, i32 8
	%12 = load %type.TypeNode** %11
	%13 = icmp eq %type.TypeNode* %12, null
	br i1 %13, label %L.4, label %L.3
L.3:
	%14 = load %ast.AstNode** %tree
	%15 = getelementptr %ast.AstNode* %14, i32 0, i32 8
	%16 = load %type.TypeNode** %15
	%17 = getelementptr %type.TypeNode* %16, i32 0, i32 14
	%18 = load i8* %17
	%19 = icmp ne i8 %18, 6
	br label %L.4
L.4:
	%20 = phi i1 [ true, %L.1 ], [ %19, %L.3 ]
	br i1 %20, label %L.6, label %L.5
L.6:
	call void @lex_Error(i8 60)
	store %ast.AstNode* null, %ast.AstNode** %rv.0
	br label %return
L.5:
	%21 = load %type.TypeNode** %t
	%22 = getelementptr %type.TypeNode* %21, i32 0, i32 21
	%23 = load i8* %22
	%24 = icmp ne i8 %23, 0
	br i1 %24, label %L.8, label %L.9
L.8:
	%25 = load %ast.AstNode** %lhs
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 0
	%27 = load i8* %26
	%28 = icmp eq i8 %27, 15
	br i1 %28, label %L.11, label %L.10
L.11:
	%29 = getelementptr [20 x i8]* @S.602
	%30 = bitcast [20 x i8]* %29 to [0 x i8]*
	call void @lex_ErrorS(i8 0, [0 x i8]* %30)
	br label %L.10
L.10:
	%31 = load %ast.AstNode** %lhs
	%32 = load %ast.AstNode** %tree
	%33 = call %ast.AstNode* @stmt_CheckSwap(%ast.AstNode* %31, %ast.AstNode* %32)
	store %ast.AstNode* %33, %ast.AstNode** %tree
	%34 = load %ast.AstNode** %lhs
	%35 = load %ast.AstNode** %tree
	%36 = call %ast.AstNode* @ast_New2(i8 28, %type.TypeNode* null, %ast.AstNode* %34, %ast.AstNode* %35)
	store %ast.AstNode* %36, %ast.AstNode** %tree
	br label %L.7
L.9:
	%37 = load %ast.AstNode** %lhs
	%38 = call i32 @expr_GetAlignment(%ast.AstNode* %37)
	store i32 %38, i32* %lalign
	%39 = load %ast.AstNode** %lhs
	%40 = getelementptr %ast.AstNode* %39, i32 0, i32 0
	%41 = load i8* %40
	%42 = icmp eq i8 %41, 15
	br i1 %42, label %L.13, label %L.14
L.13:
	%43 = load %ast.AstNode** %lhs
	%44 = getelementptr %ast.AstNode* %43, i32 0, i32 11
	%45 = getelementptr [0 x %ast.AstNode*]* %44, i32 0, i32 2
	%46 = load %ast.AstNode** %45
	%47 = bitcast %ast.AstNode* %46 to %ast.AstNode*
	store %ast.AstNode* %47, %ast.AstNode** %lsize
	%48 = load %ast.AstNode** %lhs
	%49 = getelementptr %ast.AstNode* %48, i32 0, i32 11
	%50 = getelementptr [0 x %ast.AstNode*]* %49, i32 0, i32 0
	%51 = load %ast.AstNode** %50
	%52 = getelementptr %ast.AstNode* %51, i32 0, i32 8
	%53 = load %type.TypeNode** %52
	%54 = getelementptr %type.TypeNode* %53, i32 0, i32 0
	%55 = load %type.TypeNode** %54
	%56 = getelementptr %type.TypeNode* %55, i32 0, i32 0
	%57 = load %type.TypeNode** %56
	%58 = getelementptr %type.TypeNode* %57, i32 0, i32 10
	%59 = load i32* %58
	store i32 %59, i32* %width
	br label %L.12
L.14:
	%60 = load %type.TypeNode** @type_wordtype
	%61 = load %ast.AstNode** %lhs
	%62 = getelementptr %ast.AstNode* %61, i32 0, i32 8
	%63 = load %type.TypeNode** %62
	%64 = getelementptr %type.TypeNode* %63, i32 0, i32 0
	%65 = load %type.TypeNode** %64
	%66 = getelementptr %type.TypeNode* %65
	%67 = bitcast %type.TypeNode* %66 to %type.TypeNode*
	%68 = call i32 @type_TypeNode_Span(%type.TypeNode* %67)
	%69 = zext i32 %68 to i64
	%70 = call %ast.AstNode* @ast_Const(%type.TypeNode* %60, i64 %69)
	store %ast.AstNode* %70, %ast.AstNode** %lsize
	%71 = load %ast.AstNode** %lhs
	%72 = getelementptr %ast.AstNode* %71, i32 0, i32 8
	%73 = load %type.TypeNode** %72
	%74 = getelementptr %type.TypeNode* %73, i32 0, i32 0
	%75 = load %type.TypeNode** %74
	%76 = getelementptr %type.TypeNode* %75, i32 0, i32 0
	%77 = load %type.TypeNode** %76
	%78 = getelementptr %type.TypeNode* %77, i32 0, i32 10
	%79 = load i32* %78
	store i32 %79, i32* %width
	br label %L.12
L.12:
	%80 = load %ast.AstNode** %tree
	%81 = getelementptr %ast.AstNode* %80, i32 0, i32 0
	%82 = load i8* %81
	%83 = icmp eq i8 %82, 27
	br i1 %83, label %L.15, label %L.16
L.15:
	%84 = load %ast.AstNode** %tree
	%85 = getelementptr %ast.AstNode* %84, i32 0, i32 8
	%86 = load %type.TypeNode** %85
	%87 = getelementptr %type.TypeNode* %86, i32 0, i32 14
	%88 = load i8* %87
	%89 = icmp eq i8 %88, 6
	br label %L.16
L.16:
	%90 = phi i1 [ false, %L.12 ], [ %89, %L.15 ]
	br i1 %90, label %L.18, label %L.19
L.18:
	%91 = load %ast.AstNode** %tree
	%92 = getelementptr %ast.AstNode* %91, i32 0, i32 11
	%93 = getelementptr [0 x %ast.AstNode*]* %92, i32 0, i32 0
	%94 = load %ast.AstNode** %93
	%95 = bitcast %ast.AstNode* %94 to %ast.AstNode*
	store %ast.AstNode* %95, %ast.AstNode** %tree
	br label %L.17
L.19:
	%96 = load %ast.AstNode** %tree
	%97 = getelementptr %ast.AstNode* %96, i32 0, i32 0
	%98 = load i8* %97
	%99 = icmp eq i8 %98, 9
	br i1 %99, label %L.21, label %L.20
L.20:
	%100 = load %ast.AstNode** %tree
	%101 = getelementptr %ast.AstNode* %100, i32 0, i32 0
	%102 = load i8* %101
	%103 = icmp eq i8 %102, 10
	br label %L.21
L.21:
	%104 = phi i1 [ true, %L.19 ], [ %103, %L.20 ]
	br i1 %104, label %L.23, label %L.22
L.23:
	%105 = load %ast.AstNode** %tree
	%106 = getelementptr %ast.AstNode* %105, i32 0, i32 8
	%107 = load %type.TypeNode** %106
	%108 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %107)
	%109 = load %ast.AstNode** %tree
	%110 = call %ast.AstNode* @ast_New1(i8 16, %type.TypeNode* %108, %ast.AstNode* %109)
	store %ast.AstNode* %110, %ast.AstNode** %tree
	br label %L.22
L.22:
	br label %L.17
L.17:
	%111 = load %ast.AstNode** %tree
	%112 = call i32 @expr_GetAlignment(%ast.AstNode* %111)
	store i32 %112, i32* %ralign
	%113 = load i32* %ralign
	%114 = load i32* %lalign
	%115 = icmp ult i32 %113, %114
	br i1 %115, label %L.25, label %L.24
L.25:
	%116 = load i32* %ralign
	store i32 %116, i32* %lalign
	br label %L.24
L.24:
	%117 = load %ast.AstNode** %tree
	%118 = getelementptr %ast.AstNode* %117, i32 0, i32 0
	%119 = load i8* %118
	%120 = icmp eq i8 %119, 15
	br i1 %120, label %L.27, label %L.28
L.27:
	%121 = load %ast.AstNode** %tree
	%122 = getelementptr %ast.AstNode* %121, i32 0, i32 11
	%123 = getelementptr [0 x %ast.AstNode*]* %122, i32 0, i32 2
	%124 = load %ast.AstNode** %123
	%125 = bitcast %ast.AstNode* %124 to %ast.AstNode*
	store %ast.AstNode* %125, %ast.AstNode** %rsize
	br label %L.26
L.28:
	%126 = load %type.TypeNode** @type_wordtype
	%127 = load %ast.AstNode** %tree
	%128 = getelementptr %ast.AstNode* %127, i32 0, i32 8
	%129 = load %type.TypeNode** %128
	%130 = getelementptr %type.TypeNode* %129, i32 0, i32 0
	%131 = load %type.TypeNode** %130
	%132 = getelementptr %type.TypeNode* %131
	%133 = bitcast %type.TypeNode* %132 to %type.TypeNode*
	%134 = call i32 @type_TypeNode_Span(%type.TypeNode* %133)
	%135 = zext i32 %134 to i64
	%136 = call %ast.AstNode* @ast_Const(%type.TypeNode* %126, i64 %135)
	store %ast.AstNode* %136, %ast.AstNode** %rsize
	br label %L.26
L.26:
	%137 = load %ast.AstNode** %lsize
	%138 = getelementptr %ast.AstNode* %137, i32 0, i32 0
	%139 = load i8* %138
	%140 = icmp eq i8 %139, 7
	br i1 %140, label %L.29, label %L.30
L.29:
	%141 = load %ast.AstNode** %lsize
	%142 = getelementptr %ast.AstNode* %141, i32 0, i32 10
	%143 = load i64* %142
	%144 = icmp eq i64 %143, 0
	br label %L.30
L.30:
	%145 = phi i1 [ false, %L.26 ], [ %144, %L.29 ]
	br i1 %145, label %L.32, label %L.33
L.32:
	%146 = load %ast.AstNode** %rsize
	%147 = getelementptr %ast.AstNode* %146, i32 0, i32 0
	%148 = load i8* %147
	%149 = icmp eq i8 %148, 7
	br i1 %149, label %L.34, label %L.35
L.34:
	%150 = load %ast.AstNode** %rsize
	%151 = getelementptr %ast.AstNode* %150, i32 0, i32 10
	%152 = load i64* %151
	%153 = icmp eq i64 %152, 0
	br label %L.35
L.35:
	%154 = phi i1 [ false, %L.32 ], [ %153, %L.34 ]
	br i1 %154, label %L.37, label %L.38
L.37:
	call void @lex_Error(i8 61)
	br label %L.36
L.38:
	%155 = load %ast.AstNode** %rsize
	store %ast.AstNode* %155, %ast.AstNode** %lsize
	br label %L.36
L.36:
	br label %L.31
L.33:
	%156 = load %ast.AstNode** %rsize
	%157 = getelementptr %ast.AstNode* %156, i32 0, i32 0
	%158 = load i8* %157
	%159 = icmp ne i8 %158, 7
	br i1 %159, label %L.40, label %L.39
L.39:
	%160 = load %ast.AstNode** %rsize
	%161 = getelementptr %ast.AstNode* %160, i32 0, i32 10
	%162 = load i64* %161
	%163 = icmp ne i64 %162, 0
	br label %L.40
L.40:
	%164 = phi i1 [ true, %L.33 ], [ %163, %L.39 ]
	br i1 %164, label %L.42, label %L.41
L.42:
	%165 = load %ast.AstNode** %lsize
	%166 = load %ast.AstNode** %rsize
	%167 = call %ast.AstNode* @ast_OpMinMax(i8 64, %ast.AstNode* %165, %ast.AstNode* %166)
	store %ast.AstNode* %167, %ast.AstNode** %lsize
	br label %L.41
L.41:
	br label %L.31
L.31:
	%168 = load %ast.AstNode** %lsize
	%169 = getelementptr %ast.AstNode* %168, i32 0, i32 8
	%170 = load %type.TypeNode** %169
	%171 = load %ast.AstNode** %lsize
	%172 = load %type.TypeNode** @type_wordtype
	%173 = load i32* %width
	%174 = zext i32 %173 to i64
	%175 = load %target.ModelT** @target_Target
	%176 = getelementptr %target.ModelT* %175, i32 0, i32 2
	%177 = load i8* %176
	%178 = zext i8 %177 to i64
	%179 = udiv i64 %174, %178
	%180 = call %ast.AstNode* @ast_Const(%type.TypeNode* %172, i64 %179)
	%181 = call %ast.AstNode* @ast_New2(i8 51, %type.TypeNode* %170, %ast.AstNode* %171, %ast.AstNode* %180)
	store %ast.AstNode* %181, %ast.AstNode** %lsize
	%182 = load %ast.AstNode** %lhs
	%183 = call %ast.AstNode* @stmt_ArrayFix(%ast.AstNode* %182)
	store %ast.AstNode* %183, %ast.AstNode** %lhs
	%184 = load %ast.AstNode** %tree
	%185 = call %ast.AstNode* @stmt_ArrayFix(%ast.AstNode* %184)
	store %ast.AstNode* %185, %ast.AstNode** %tree
	%186 = load %ast.AstNode** %lhs
	%187 = getelementptr %ast.AstNode* %186, i32 0, i32 8
	%188 = load %type.TypeNode** %187
	%189 = load %ast.AstNode** %lhs
	%190 = load %ast.AstNode** %tree
	%191 = call %ast.AstNode* @ast_New2(i8 22, %type.TypeNode* %188, %ast.AstNode* %189, %ast.AstNode* %190)
	store %ast.AstNode* %191, %ast.AstNode** %tree
	%192 = load %ast.AstNode** %tree
	%193 = load %ast.AstNode** %lsize
	%194 = call %ast.AstNode* @ast_Child(%ast.AstNode* %192, %ast.AstNode* %193)
	store %ast.AstNode* %194, %ast.AstNode** %tree
	%195 = load %type.TypeNode** @type_wordtype
	%196 = load i32* %lalign
	%197 = zext i32 %196 to i64
	%198 = call %ast.AstNode* @ast_Const(%type.TypeNode* %195, i64 %197)
	store %ast.AstNode* %198, %ast.AstNode** %align
	%199 = load %ast.AstNode** %tree
	%200 = load %ast.AstNode** %align
	%201 = call %ast.AstNode* @ast_Child(%ast.AstNode* %199, %ast.AstNode* %200)
	store %ast.AstNode* %201, %ast.AstNode** %tree
	br label %L.7
L.7:
	%202 = load %ast.AstNode** %tree
	store %ast.AstNode* %202, %ast.AstNode** %rv.0
	br label %return
return:
	%203 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %203
}
@S.603 = internal constant [19 x i8] c"Assign LHS not REF\00"
define internal %ast.AstNode* @stmt_Assign(%ast.AstNode* %lhs$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%lhs = alloca %ast.AstNode*
	store %ast.AstNode* %lhs$, %ast.AstNode** %lhs
	%tree = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	%lrhs = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	%op = alloca i8
	%tok = alloca i8
	%optok = alloca i8
	%nl = alloca i16
	%nr = alloca i16
	%i = alloca i16
	%tl = alloca %type.TypeListEntry*
	%0 = load %ast.AstNode** %lhs
	%1 = call %ast.AstNode* @ast_New1(i8 28, %type.TypeNode* null, %ast.AstNode* %0)
	store %ast.AstNode* %1, %ast.AstNode** %tree
	store i16 1, i16* %nl
	br label %L.1
L.1:
	%2 = load i8* @lex_Token
	store i8 %2, i8* %tok
	%3 = load i8* %tok
	%4 = icmp ne i8 %3, 5
	br i1 %4, label %L.2, label %L.3
L.3:
	%5 = call i8 @lex_Next()
	store i8 %5, i8* %tok
	%6 = load i8* %tok
	%7 = icmp eq i8 %6, 41
	br i1 %7, label %L.4, label %L.5
L.4:
	%8 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%9 = call i8 @symb_IsAnon([0 x i8]* %8)
	%10 = icmp ne i8 %9, 0
	br label %L.5
L.5:
	%11 = phi i1 [ false, %L.3 ], [ %10, %L.4 ]
	br i1 %11, label %L.7, label %L.8
L.7:
	%12 = call i8 @lex_Next()
	store i8 %12, i8* %tok
	store %ast.AstNode* null, %ast.AstNode** %lhs
	br label %L.6
L.8:
	%13 = call %ast.AstNode* @expr_GetLHS()
	store %ast.AstNode* %13, %ast.AstNode** %lhs
	br label %L.6
L.6:
	%14 = load %ast.AstNode** %tree
	%15 = load %ast.AstNode** %lhs
	%16 = call %ast.AstNode* @ast_Child(%ast.AstNode* %14, %ast.AstNode* %15)
	store %ast.AstNode* %16, %ast.AstNode** %tree
	%17 = load i16* %nl
	%18 = add i16 %17, 1
	store i16 %18, i16* %nl
	br label %L.1
L.2:
	%19 = load i8* %tok
	%20 = icmp uge i8 %19, 9
	br i1 %20, label %L.9, label %L.10
L.9:
	%21 = load i8* %tok
	%22 = icmp ule i8 %21, 11
	br label %L.10
L.10:
	%23 = phi i1 [ false, %L.2 ], [ %22, %L.9 ]
	br i1 %23, label %L.12, label %L.13
L.12:
	%24 = load i8* %tok
	store i8 %24, i8* %optok
	%25 = call i8 @lex_Next()
	store i8 %25, i8* %tok
	%26 = load i16* %nl
	%27 = icmp ugt i16 %26, 1
	br i1 %27, label %L.14, label %L.15
L.14:
	%28 = load i8* %optok
	%29 = icmp ne i8 %28, 9
	br label %L.15
L.15:
	%30 = phi i1 [ false, %L.12 ], [ %29, %L.14 ]
	br i1 %30, label %L.17, label %L.16
L.17:
	call void @lex_Error(i8 38)
	br label %L.16
L.16:
	store i16 0, i16* %nr
	br label %L.18
L.18:
	%31 = load %ast.AstNode** %tree
	%32 = getelementptr %ast.AstNode* %31, i32 0, i32 11
	%33 = load i16* %nr
	%34 = zext i16 %33 to i32
	%35 = getelementptr [0 x %ast.AstNode*]* %32, i32 0, i32 %34
	%36 = load %ast.AstNode** %35
	%37 = bitcast %ast.AstNode* %36 to %ast.AstNode*
	store %ast.AstNode* %37, %ast.AstNode** %lhs
	store %type.TypeNode* null, %type.TypeNode** %t
	%38 = load %ast.AstNode** %lhs
	%39 = icmp ne %ast.AstNode* %38, null
	br i1 %39, label %L.21, label %L.20
L.21:
	%40 = load %ast.AstNode** %lhs
	%41 = getelementptr %ast.AstNode* %40, i32 0, i32 8
	%42 = load %type.TypeNode** %41
	%43 = getelementptr %type.TypeNode* %42, i32 0, i32 14
	%44 = load i8* %43
	%45 = icmp ne i8 %44, 5
	br i1 %45, label %L.23, label %L.24
L.23:
	%46 = getelementptr [19 x i8]* @S.603
	%47 = bitcast [19 x i8]* %46 to [0 x i8]*
	call void @lex_ErrorS(i8 86, [0 x i8]* %47)
	br label %L.22
L.24:
	%48 = load %ast.AstNode** %lhs
	%49 = getelementptr %ast.AstNode* %48, i32 0, i32 8
	%50 = load %type.TypeNode** %49
	%51 = getelementptr %type.TypeNode* %50, i32 0, i32 0
	%52 = load %type.TypeNode** %51
	%53 = bitcast %type.TypeNode* %52 to %type.TypeNode*
	store %type.TypeNode* %53, %type.TypeNode** %t
	br label %L.22
L.22:
	br label %L.20
L.20:
	%54 = load %type.TypeNode** %t
	%55 = icmp ne %type.TypeNode* %54, null
	br i1 %55, label %L.27, label %L.28
L.27:
	%56 = load %type.TypeNode** %t
	%57 = getelementptr %type.TypeNode* %56, i32 0, i32 14
	%58 = load i8* %57
	%59 = icmp eq i8 %58, 7
	br label %L.28
L.28:
	%60 = phi i1 [ false, %L.20 ], [ %59, %L.27 ]
	br i1 %60, label %L.25, label %L.26
L.25:
	%61 = load %type.TypeNode** %t
	%62 = getelementptr %type.TypeNode* %61, i32 0, i32 21
	%63 = load i8* %62
	%64 = icmp ne i8 %63, 0
	%65 = xor i1 %64, true
	br label %L.26
L.26:
	%66 = phi i1 [ false, %L.28 ], [ %65, %L.25 ]
	br i1 %66, label %L.30, label %L.31
L.30:
	%67 = load i8* %optok
	%68 = icmp eq i8 %67, 9
	br i1 %68, label %L.32, label %L.33
L.32:
	%69 = load i16* %nl
	%70 = icmp eq i16 %69, 1
	br label %L.33
L.33:
	%71 = phi i1 [ false, %L.30 ], [ %70, %L.32 ]
	br i1 %71, label %L.35, label %L.36
L.35:
	%72 = load %ast.AstNode** %lhs
	%73 = call %ast.AstNode* @stmt_AssignRecord(%ast.AstNode* %72)
	store %ast.AstNode* %73, %ast.AstNode** %tree
	br label %L.34
L.36:
	call void @lex_Error(i8 38)
	br label %L.34
L.34:
	%74 = load i16* %nr
	%75 = add i16 %74, 1
	store i16 %75, i16* %nr
	br label %L.29
L.31:
	%76 = load %type.TypeNode** %t
	%77 = icmp ne %type.TypeNode* %76, null
	br i1 %77, label %L.39, label %L.40
L.39:
	%78 = load %type.TypeNode** %t
	%79 = getelementptr %type.TypeNode* %78, i32 0, i32 14
	%80 = load i8* %79
	%81 = icmp eq i8 %80, 6
	br label %L.40
L.40:
	%82 = phi i1 [ false, %L.31 ], [ %81, %L.39 ]
	br i1 %82, label %L.37, label %L.38
L.37:
	%83 = load %type.TypeNode** %t
	%84 = getelementptr %type.TypeNode* %83, i32 0, i32 21
	%85 = load i8* %84
	%86 = icmp ne i8 %85, 0
	%87 = xor i1 %86, true
	br label %L.38
L.38:
	%88 = phi i1 [ false, %L.40 ], [ %87, %L.37 ]
	br i1 %88, label %L.42, label %L.43
L.42:
	%89 = load i8* %optok
	%90 = icmp eq i8 %89, 9
	br i1 %90, label %L.44, label %L.45
L.44:
	%91 = load i16* %nl
	%92 = icmp eq i16 %91, 1
	br label %L.45
L.45:
	%93 = phi i1 [ false, %L.42 ], [ %92, %L.44 ]
	br i1 %93, label %L.47, label %L.48
L.47:
	%94 = load %ast.AstNode** %lhs
	%95 = call %ast.AstNode* @stmt_AssignArray(%ast.AstNode* %94)
	store %ast.AstNode* %95, %ast.AstNode** %tree
	br label %L.46
L.48:
	call void @lex_Error(i8 38)
	br label %L.46
L.46:
	%96 = load i16* %nr
	%97 = add i16 %96, 1
	store i16 %97, i16* %nr
	br label %L.41
L.43:
	%98 = load %type.TypeNode** %t
	%99 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %98)
	store %ast.AstNode* %99, %ast.AstNode** %rhs
	%100 = load %ast.AstNode** %rhs
	%101 = icmp ne %ast.AstNode* %100, null
	br i1 %101, label %L.50, label %L.49
L.50:
	%102 = load %ast.AstNode** %rhs
	%103 = getelementptr %ast.AstNode* %102, i32 0, i32 0
	%104 = load i8* %103
	%105 = icmp eq i8 %104, 18
	br i1 %105, label %L.56, label %L.55
L.55:
	%106 = load %ast.AstNode** %rhs
	%107 = getelementptr %ast.AstNode* %106, i32 0, i32 0
	%108 = load i8* %107
	%109 = icmp eq i8 %108, 19
	br label %L.56
L.56:
	%110 = phi i1 [ true, %L.50 ], [ %109, %L.55 ]
	br i1 %110, label %L.53, label %L.54
L.53:
	%111 = load %ast.AstNode** %rhs
	%112 = getelementptr %ast.AstNode* %111, i32 0, i32 9
	%113 = load %symb.SymbNode** %112
	%114 = getelementptr %symb.SymbNode* %113, i32 0, i32 4
	%115 = load %type.TypeListEntry** %114
	%116 = icmp ne %type.TypeListEntry* %115, null
	br label %L.54
L.54:
	%117 = phi i1 [ false, %L.56 ], [ %116, %L.53 ]
	br i1 %117, label %L.51, label %L.52
L.51:
	%118 = load %ast.AstNode** %rhs
	%119 = getelementptr %ast.AstNode* %118, i32 0, i32 9
	%120 = load %symb.SymbNode** %119
	%121 = getelementptr %symb.SymbNode* %120, i32 0, i32 4
	%122 = load %type.TypeListEntry** %121
	%123 = getelementptr %type.TypeListEntry* %122, i32 0, i32 0
	%124 = load %type.TypeListEntry** %123
	%125 = icmp ne %type.TypeListEntry* %124, null
	br label %L.52
L.52:
	%126 = phi i1 [ false, %L.54 ], [ %125, %L.51 ]
	br i1 %126, label %L.58, label %L.59
L.58:
	%127 = load %ast.AstNode** %rhs
	%128 = getelementptr %ast.AstNode* %127, i32 0, i32 9
	%129 = load %symb.SymbNode** %128
	%130 = getelementptr %symb.SymbNode* %129, i32 0, i32 4
	%131 = load %type.TypeListEntry** %130
	store %type.TypeListEntry* %131, %type.TypeListEntry** %tl
	store i16 0, i16* %i
	br label %L.60
L.60:
	%132 = load %type.TypeListEntry** %tl
	%133 = getelementptr %type.TypeListEntry* %132, i32 0, i32 1
	%134 = load %type.TypeNode** %133
	%135 = bitcast %type.TypeNode* %134 to %type.TypeNode*
	%136 = load %ast.AstNode** %rhs
	%137 = call %ast.AstNode* @ast_New1(i8 26, %type.TypeNode* %135, %ast.AstNode* %136)
	store %ast.AstNode* %137, %ast.AstNode** %lrhs
	%138 = load %type.TypeListEntry** %tl
	%139 = getelementptr %type.TypeListEntry* %138, i32 0, i32 1
	%140 = load %type.TypeNode** %139
	%141 = getelementptr %type.TypeNode* %140, i32 0, i32 10
	%142 = load i32* %141
	%143 = load %ast.AstNode** %lrhs
	%144 = getelementptr %ast.AstNode* %143, i32 0, i32 7
	store i32 %142, i32* %144
	%145 = load i16* %i
	%146 = zext i16 %145 to i64
	%147 = load %ast.AstNode** %lrhs
	%148 = getelementptr %ast.AstNode* %147, i32 0, i32 10
	store i64 %146, i64* %148
	%149 = load %ast.AstNode** %tree
	%150 = load %ast.AstNode** %lrhs
	%151 = call %ast.AstNode* @ast_Child(%ast.AstNode* %149, %ast.AstNode* %150)
	store %ast.AstNode* %151, %ast.AstNode** %tree
	%152 = load i16* %i
	%153 = add i16 %152, 1
	store i16 %153, i16* %i
	%154 = load %type.TypeListEntry** %tl
	%155 = getelementptr %type.TypeListEntry* %154, i32 0, i32 0
	%156 = load %type.TypeListEntry** %155
	%157 = bitcast %type.TypeListEntry* %156 to %type.TypeListEntry*
	store %type.TypeListEntry* %157, %type.TypeListEntry** %tl
	%158 = load %type.TypeListEntry** %tl
	%159 = icmp eq %type.TypeListEntry* %158, null
	br i1 %159, label %L.61, label %L.62
L.62:
	br label %L.60
L.61:
	%160 = load i16* %nr
	%161 = load i16* %i
	%162 = add i16 %160, %161
	store i16 %162, i16* %nr
	br label %L.57
L.59:
	%163 = load %ast.AstNode** %rhs
	%164 = getelementptr %ast.AstNode* %163, i32 0, i32 8
	%165 = load %type.TypeNode** %164
	%166 = icmp ne %type.TypeNode* %165, null
	br i1 %166, label %L.64, label %L.65
L.64:
	%167 = load i8* %optok
	%168 = icmp ne i8 %167, 9
	br i1 %168, label %L.67, label %L.66
L.67:
	%169 = load %ast.AstNode** %lhs
	%170 = call %ast.AstNode* @expr_Load(%ast.AstNode* %169)
	store %ast.AstNode* %170, %ast.AstNode** %lrhs
	%171 = load i8* %optok
	%172 = icmp eq i8 %171, 10
	br i1 %172, label %L.69, label %L.70
L.69:
	store i8 49, i8* %op
	br label %L.68
L.70:
	store i8 50, i8* %op
	br label %L.68
L.68:
	%173 = load i8* %op
	%174 = load %ast.AstNode** %lrhs
	%175 = load %ast.AstNode** %rhs
	%176 = call %ast.AstNode* @ast_OpBinary(i8 %173, %ast.AstNode* %174, %ast.AstNode* %175, %type.TypeNode* null)
	store %ast.AstNode* %176, %ast.AstNode** %rhs
	br label %L.66
L.66:
	%177 = load %ast.AstNode** %lhs
	%178 = icmp ne %ast.AstNode* %177, null
	br i1 %178, label %L.72, label %L.71
L.72:
	%179 = load %ast.AstNode** %rhs
	%180 = load %ast.AstNode** %lhs
	%181 = getelementptr %ast.AstNode* %180, i32 0, i32 8
	%182 = load %type.TypeNode** %181
	%183 = getelementptr %type.TypeNode* %182, i32 0, i32 0
	%184 = load %type.TypeNode** %183
	%185 = bitcast %type.TypeNode* %184 to %type.TypeNode*
	%186 = call %ast.AstNode* @expr_Adjust(%ast.AstNode* %179, %type.TypeNode* %185)
	store %ast.AstNode* %186, %ast.AstNode** %rhs
	%187 = load %ast.AstNode** %lhs
	%188 = load %ast.AstNode** %rhs
	%189 = call %ast.AstNode* @stmt_CheckSwap(%ast.AstNode* %187, %ast.AstNode* %188)
	store %ast.AstNode* %189, %ast.AstNode** %rhs
	br label %L.71
L.71:
	br label %L.63
L.65:
	call void @lex_Error(i8 40)
	br label %L.63
L.63:
	%190 = load %ast.AstNode** %tree
	%191 = load %ast.AstNode** %rhs
	%192 = call %ast.AstNode* @ast_Child(%ast.AstNode* %190, %ast.AstNode* %191)
	store %ast.AstNode* %192, %ast.AstNode** %tree
	%193 = load i16* %nr
	%194 = add i16 %193, 1
	store i16 %194, i16* %nr
	br label %L.57
L.57:
	br label %L.49
L.49:
	br label %L.41
L.41:
	br label %L.29
L.29:
	%195 = load i8* @lex_Token
	store i8 %195, i8* %tok
	%196 = load i8* %tok
	%197 = icmp ne i8 %196, 5
	br i1 %197, label %L.19, label %L.73
L.73:
	%198 = call i8 @lex_Next()
	store i8 %198, i8* %tok
	br label %L.18
L.19:
	%199 = load i16* %nl
	%200 = load i16* %nr
	%201 = icmp ne i16 %199, %200
	br i1 %201, label %L.75, label %L.74
L.75:
	%202 = load i16* %nl
	%203 = load i16* %nr
	%204 = icmp ult i16 %202, %203
	br i1 %204, label %L.77, label %L.78
L.77:
	call void @lex_Error(i8 42)
	br label %L.76
L.78:
	call void @lex_Error(i8 43)
	br label %L.76
L.76:
	br label %L.74
L.74:
	br label %L.11
L.13:
	call void @lex_Error(i8 37)
	br label %L.11
L.11:
	%205 = load %ast.AstNode** %tree
	store %ast.AstNode* %205, %ast.AstNode** %rv.0
	br label %return
return:
	%206 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %206
}
define internal %ast.AstNode* @stmt_AssignOrCall(%symb.SymbNode* %s$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%s = alloca %symb.SymbNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%tree = alloca %ast.AstNode*
	%tok = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load %symb.SymbNode** %s
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 13
	%2 = load i8* %1
	%3 = icmp eq i8 %2, 6
	br i1 %3, label %L.2, label %L.1
L.2:
	%4 = load %symb.SymbNode** %s
	%5 = call %symb.SymbNode* @symb_FindPackage(%symb.SymbNode* %4)
	store %symb.SymbNode* %5, %symb.SymbNode** %s
	%6 = call i8 @lex_Next()
	store i8 %6, i8* %tok
	br label %L.1
L.1:
	%7 = load %symb.SymbNode** %s
	%8 = icmp ne %symb.SymbNode* %7, null
	br i1 %8, label %L.4, label %L.5
L.4:
	%9 = load %symb.SymbNode** %s
	%10 = call %ast.AstNode* @expr_Primary(%symb.SymbNode* %9, %type.TypeNode* null)
	store %ast.AstNode* %10, %ast.AstNode** %tree
	%11 = load %ast.AstNode** %tree
	%12 = icmp ne %ast.AstNode* %11, null
	br i1 %12, label %L.7, label %L.6
L.7:
	%13 = load %ast.AstNode** %tree
	%14 = getelementptr %ast.AstNode* %13, i32 0, i32 0
	%15 = load i8* %14
	%16 = zext i8 %15 to i32
	switch i32 %16, label %L.8 [
		i32 18, label %L.10
		i32 19, label %L.10
		i32 20, label %L.10
		i32 21, label %L.10
		i32 2, label %L.11
	]
L.10:
	br label %L.9
L.11:
	%17 = load %ast.AstNode** %tree
	%18 = getelementptr %ast.AstNode* %17, i32 0, i32 9
	%19 = load %symb.SymbNode** %18
	%20 = getelementptr %symb.SymbNode* %19, i32 0, i32 22
	%21 = getelementptr [0 x i8]* %20
	%22 = bitcast [0 x i8]* %21 to [0 x i8]*
	call void @lex_ErrorI(i8 29, [0 x i8]* %22)
	%23 = bitcast [3 x i8]* @stmt_skiplist to [0 x i8]*
	%24 = call i8 @lex_Skip([0 x i8]* %23)
	store i8 %24, i8* %tok
	br label %L.9
L.8:
	%25 = load %ast.AstNode** %tree
	%26 = call %ast.AstNode* @stmt_Assign(%ast.AstNode* %25)
	store %ast.AstNode* %26, %ast.AstNode** %tree
	br label %L.9
L.9:
	br label %L.6
L.6:
	br label %L.3
L.5:
	%27 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 19, [0 x i8]* %27)
	%28 = bitcast [3 x i8]* @stmt_skiplist to [0 x i8]*
	%29 = call i8 @lex_Skip([0 x i8]* %28)
	store i8 %29, i8* %tok
	br label %L.3
L.3:
	%30 = call i8 @lex_Expect(i8 4)
	store i8 %30, i8* %tok
	%31 = load %ast.AstNode** %tree
	store %ast.AstNode* %31, %ast.AstNode** %rv.0
	br label %return
return:
	%32 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %32
}
define internal %ast.AstNode* @stmt_Return() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%rval = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	%tl = alloca %type.TypeListEntry*
	%tok = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	store %type.TypeListEntry* null, %type.TypeListEntry** %tl
	%0 = load %symb.SymbNode** @symb_curproc
	%1 = icmp ne %symb.SymbNode* %0, null
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load %symb.SymbNode** @symb_curproc
	%3 = getelementptr %symb.SymbNode* %2, i32 0, i32 4
	%4 = load %type.TypeListEntry** %3
	store %type.TypeListEntry* %4, %type.TypeListEntry** %tl
	br label %L.1
L.3:
	call void @lex_Error(i8 56)
	br label %L.1
L.1:
	%5 = call %ast.AstNode* @ast_New(i8 90, %type.TypeNode* null)
	store %ast.AstNode* %5, %ast.AstNode** %tree
	%6 = load i8* @lex_Token
	store i8 %6, i8* %tok
	br label %L.4
L.4:
	%7 = load i8* %tok
	%8 = icmp eq i8 %7, 4
	br i1 %8, label %L.5, label %L.6
L.6:
	%9 = load %type.TypeListEntry** %tl
	%10 = icmp ne %type.TypeListEntry* %9, null
	br i1 %10, label %L.8, label %L.9
L.8:
	%11 = load %type.TypeListEntry** %tl
	%12 = getelementptr %type.TypeListEntry* %11, i32 0, i32 1
	%13 = load %type.TypeNode** %12
	%14 = bitcast %type.TypeNode* %13 to %type.TypeNode*
	store %type.TypeNode* %14, %type.TypeNode** %t
	br label %L.7
L.9:
	call void @lex_Error(i8 44)
	store %type.TypeNode* null, %type.TypeNode** %t
	br label %L.7
L.7:
	%15 = load %type.TypeNode** %t
	%16 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %15)
	store %ast.AstNode* %16, %ast.AstNode** %rval
	%17 = load %ast.AstNode** %rval
	%18 = icmp ne %ast.AstNode* %17, null
	br i1 %18, label %L.11, label %L.10
L.11:
	%19 = load %type.TypeNode** %t
	%20 = icmp ne %type.TypeNode* %19, null
	br i1 %20, label %L.13, label %L.14
L.13:
	%21 = load %ast.AstNode** %rval
	%22 = load %type.TypeNode** %t
	%23 = call %ast.AstNode* @expr_Adjust(%ast.AstNode* %21, %type.TypeNode* %22)
	store %ast.AstNode* %23, %ast.AstNode** %rval
	%24 = load %ast.AstNode** %tree
	%25 = load %ast.AstNode** %rval
	%26 = call %ast.AstNode* @ast_Child(%ast.AstNode* %24, %ast.AstNode* %25)
	store %ast.AstNode* %26, %ast.AstNode** %tree
	%27 = load %type.TypeNode** %t
	%28 = getelementptr %type.TypeNode* %27, i32 0, i32 14
	%29 = load i8* %28
	%30 = icmp eq i8 %29, 5
	br i1 %30, label %L.16, label %L.17
L.16:
	%31 = load %type.TypeNode** %t
	%32 = getelementptr %type.TypeNode* %31, i32 0, i32 0
	%33 = load %type.TypeNode** %32
	%34 = bitcast %type.TypeNode* %33 to %type.TypeNode*
	%35 = load %ast.AstNode** %tree
	%36 = getelementptr %ast.AstNode* %35, i32 0, i32 8
	store %type.TypeNode* %34, %type.TypeNode** %36
	%37 = load %target.ModelT** @target_Target
	%38 = getelementptr %target.ModelT* %37, i32 0, i32 6
	%39 = getelementptr %target.SizeAlign* %38, i32 0, i32 0
	%40 = load i8* %39
	%41 = zext i8 %40 to i32
	%42 = load %ast.AstNode** %tree
	%43 = getelementptr %ast.AstNode* %42, i32 0, i32 7
	store i32 %41, i32* %43
	br label %L.15
L.17:
	%44 = load %type.TypeNode** %t
	%45 = getelementptr %type.TypeNode* %44, i32 0, i32 10
	%46 = load i32* %45
	%47 = load %ast.AstNode** %tree
	%48 = getelementptr %ast.AstNode* %47, i32 0, i32 7
	store i32 %46, i32* %48
	br label %L.15
L.15:
	br label %L.12
L.14:
	call void @lex_Error(i8 44)
	br label %L.12
L.12:
	br label %L.10
L.10:
	%49 = load %type.TypeListEntry** %tl
	%50 = icmp ne %type.TypeListEntry* %49, null
	br i1 %50, label %L.19, label %L.18
L.19:
	%51 = load %type.TypeListEntry** %tl
	%52 = getelementptr %type.TypeListEntry* %51, i32 0, i32 0
	%53 = load %type.TypeListEntry** %52
	%54 = bitcast %type.TypeListEntry* %53 to %type.TypeListEntry*
	store %type.TypeListEntry* %54, %type.TypeListEntry** %tl
	br label %L.18
L.18:
	%55 = load i8* @lex_Token
	store i8 %55, i8* %tok
	%56 = load i8* %tok
	%57 = icmp ne i8 %56, 5
	br i1 %57, label %L.5, label %L.20
L.20:
	%58 = call i8 @lex_Next()
	store i8 %58, i8* %tok
	br label %L.4
L.5:
	%59 = load %ast.AstNode** %tree
	%60 = getelementptr %ast.AstNode* %59, i32 0, i32 2
	%61 = load i16* %60
	%62 = icmp ne i16 %61, 0
	br i1 %62, label %L.22, label %L.21
L.22:
	%63 = load %ast.AstNode** %tree
	%64 = getelementptr %ast.AstNode* %63, i32 0, i32 11
	%65 = getelementptr [0 x %ast.AstNode*]* %64, i32 0, i32 0
	%66 = load %ast.AstNode** %65
	%67 = getelementptr %ast.AstNode* %66, i32 0, i32 8
	%68 = load %type.TypeNode** %67
	%69 = load %ast.AstNode** %tree
	%70 = getelementptr %ast.AstNode* %69, i32 0, i32 8
	store %type.TypeNode* %68, %type.TypeNode** %70
	%71 = load %ast.AstNode** %tree
	%72 = getelementptr %ast.AstNode* %71, i32 0, i32 11
	%73 = getelementptr [0 x %ast.AstNode*]* %72, i32 0, i32 0
	%74 = load %ast.AstNode** %73
	%75 = getelementptr %ast.AstNode* %74, i32 0, i32 7
	%76 = load i32* %75
	%77 = load %ast.AstNode** %tree
	%78 = getelementptr %ast.AstNode* %77, i32 0, i32 7
	store i32 %76, i32* %78
	br label %L.21
L.21:
	%79 = call i8 @lex_Expect(i8 4)
	%80 = load %ast.AstNode** %tree
	store %ast.AstNode* %80, %ast.AstNode** %rv.0
	br label %return
return:
	%81 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %81
}
define internal %ast.AstNode* @stmt_If() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%ctree = alloca %ast.AstNode*
	%stree = alloca %ast.AstNode*
	%vlo = alloca %ast.AstNode*
	%vhi = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	%s = alloca %symb.SymbNode*
	%tok = alloca i8
	%tok2 = alloca i8
	%op = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	store i8 87, i8* %op
	%0 = call %ast.AstNode* @expr_Bool(%type.TypeNode* null)
	store %ast.AstNode* %0, %ast.AstNode** %ctree
	%1 = load %ast.AstNode** %ctree
	%2 = icmp ne %ast.AstNode* %1, null
	br i1 %2, label %L.2, label %L.1
L.2:
	%3 = load %ast.AstNode** %ctree
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 0
	%5 = load i8* %4
	%6 = icmp eq i8 %5, 7
	br i1 %6, label %L.4, label %L.3
L.4:
	%7 = load %ast.AstNode** %ctree
	%8 = call %ast.AstNode* @stmt_CCIfTail(%ast.AstNode* %7, i8 2)
	store %ast.AstNode* %8, %ast.AstNode** %rv.0
	br label %return
L.3:
	%9 = load %ast.AstNode** %ctree
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 8
	%11 = load %type.TypeNode** %10
	store %type.TypeNode* %11, %type.TypeNode** %t
	%12 = load %type.TypeNode** %t
	%13 = load %type.TypeNode** @type_booltype
	%14 = call i8 @type_Compat(%type.TypeNode* %12, %type.TypeNode* %13)
	%15 = icmp ne i8 %14, 0
	br i1 %15, label %L.6, label %L.7
L.6:
	%16 = load %ast.AstNode** %ctree
	%17 = call %ast.AstNode* @ast_ForceBoolean(%ast.AstNode* %16)
	store %ast.AstNode* %17, %ast.AstNode** %ctree
	br label %L.5
L.7:
	store i8 88, i8* %op
	br label %L.5
L.5:
	%18 = load i8* %op
	%19 = call %ast.AstNode* @ast_New(i8 %18, %type.TypeNode* null)
	store %ast.AstNode* %19, %ast.AstNode** %tree
	%20 = load %ast.AstNode** %tree
	%21 = load %ast.AstNode** %ctree
	%22 = call %ast.AstNode* @ast_Child(%ast.AstNode* %20, %ast.AstNode* %21)
	store %ast.AstNode* %22, %ast.AstNode** %tree
	br label %L.1
L.1:
	%23 = bitcast [3 x i8]* @stmt_isthenlist to [0 x i8]*
	%24 = call i8 @lex_Keyword([0 x i8]* %23)
	store i8 %24, i8* %tok
	%25 = load i8* %tok
	%26 = zext i8 %25 to i32
	switch i32 %26, label %L.8 [
		i32 61, label %L.10
		i32 58, label %L.11
	]
L.10:
	br label %L.12
L.12:
	%27 = call %ast.AstNode* @ast_New(i8 89, %type.TypeNode* null)
	store %ast.AstNode* %27, %ast.AstNode** %ctree
	br label %L.14
L.14:
	%28 = call i8 @lex_Next()
	store i8 %28, i8* %tok
	%29 = load %type.TypeNode** %t
	%30 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %29)
	store %ast.AstNode* %30, %ast.AstNode** %vlo
	%31 = load %ast.AstNode** %vlo
	%32 = icmp ne %ast.AstNode* %31, null
	br i1 %32, label %L.16, label %L.17
L.16:
	%33 = load %ast.AstNode** %vlo
	%34 = getelementptr %ast.AstNode* %33, i32 0, i32 0
	%35 = load i8* %34
	%36 = icmp ne i8 %35, 7
	br label %L.17
L.17:
	%37 = phi i1 [ false, %L.14 ], [ %36, %L.16 ]
	br i1 %37, label %L.19, label %L.18
L.19:
	call void @lex_Error(i8 72)
	br label %L.18
L.18:
	%38 = load i8* @lex_Token
	store i8 %38, i8* %tok
	%39 = load i8* %tok
	%40 = icmp eq i8 %39, 6
	br i1 %40, label %L.21, label %L.20
L.21:
	%41 = call i8 @lex_Next()
	store i8 %41, i8* %tok
	%42 = load %type.TypeNode** %t
	%43 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %42)
	store %ast.AstNode* %43, %ast.AstNode** %vhi
	%44 = load %ast.AstNode** %vhi
	%45 = icmp ne %ast.AstNode* %44, null
	br i1 %45, label %L.23, label %L.22
L.23:
	%46 = load %ast.AstNode** %vhi
	%47 = getelementptr %ast.AstNode* %46, i32 0, i32 0
	%48 = load i8* %47
	%49 = icmp ne i8 %48, 7
	br i1 %49, label %L.25, label %L.24
L.25:
	call void @lex_Error(i8 72)
	br label %L.24
L.24:
	%50 = load %ast.AstNode** %vlo
	%51 = icmp ne %ast.AstNode* %50, null
	br i1 %51, label %L.27, label %L.26
L.27:
	%52 = load %ast.AstNode** %vlo
	%53 = getelementptr %ast.AstNode* %52, i32 0, i32 8
	%54 = load %type.TypeNode** %53
	%55 = load %ast.AstNode** %vlo
	%56 = load %ast.AstNode** %vhi
	%57 = call %ast.AstNode* @ast_New2(i8 11, %type.TypeNode* %54, %ast.AstNode* %55, %ast.AstNode* %56)
	store %ast.AstNode* %57, %ast.AstNode** %vlo
	br label %L.26
L.26:
	br label %L.22
L.22:
	br label %L.20
L.20:
	%58 = load %ast.AstNode** %ctree
	%59 = load %ast.AstNode** %vlo
	%60 = call %ast.AstNode* @ast_Child(%ast.AstNode* %58, %ast.AstNode* %59)
	store %ast.AstNode* %60, %ast.AstNode** %ctree
	%61 = load i8* @lex_Token
	store i8 %61, i8* %tok
	%62 = load i8* %tok
	%63 = icmp ne i8 %62, 5
	br i1 %63, label %L.15, label %L.28
L.28:
	br label %L.14
L.15:
	%64 = call i8 @lex_Expect(i8 58)
	%65 = call %ast.AstNode* @stmt_Statement()
	store %ast.AstNode* %65, %ast.AstNode** %stree
	%66 = load %ast.AstNode** %ctree
	%67 = load %ast.AstNode** %stree
	%68 = call %ast.AstNode* @ast_Child(%ast.AstNode* %66, %ast.AstNode* %67)
	store %ast.AstNode* %68, %ast.AstNode** %ctree
	%69 = load %ast.AstNode** %tree
	%70 = load %ast.AstNode** %ctree
	%71 = call %ast.AstNode* @ast_Child(%ast.AstNode* %69, %ast.AstNode* %70)
	store %ast.AstNode* %71, %ast.AstNode** %tree
	%72 = bitcast [3 x i8]* @stmt_isthenlist to [0 x i8]*
	%73 = call i8 @lex_Keyword([0 x i8]* %72)
	store i8 %73, i8* %tok
	%74 = load i8* %tok
	%75 = icmp ne i8 %74, 61
	br i1 %75, label %L.13, label %L.29
L.29:
	br label %L.12
L.13:
	br label %L.9
L.11:
	%76 = load i8* %op
	%77 = icmp eq i8 %76, 88
	br i1 %77, label %L.31, label %L.30
L.31:
	call void @lex_Error(i8 48)
	br label %L.30
L.30:
	%78 = call i8 @lex_Next()
	store i8 %78, i8* %tok
	%79 = call %ast.AstNode* @stmt_Statement()
	store %ast.AstNode* %79, %ast.AstNode** %stree
	%80 = load %ast.AstNode** %tree
	%81 = load %ast.AstNode** %stree
	%82 = call %ast.AstNode* @ast_Child(%ast.AstNode* %80, %ast.AstNode* %81)
	store %ast.AstNode* %82, %ast.AstNode** %tree
	br label %L.9
L.8:
	call void @lex_Error(i8 54)
	br label %L.9
L.9:
	%83 = bitcast [3 x i8]* @stmt_elselist to [0 x i8]*
	%84 = call i8 @lex_Keyword([0 x i8]* %83)
	store i8 %84, i8* %tok
	%85 = load i8* %tok
	%86 = icmp eq i8 %85, 60
	br i1 %86, label %L.33, label %L.32
L.32:
	%87 = load i8* %tok
	%88 = icmp eq i8 %87, 59
	br label %L.33
L.33:
	%89 = phi i1 [ true, %L.9 ], [ %88, %L.32 ]
	br i1 %89, label %L.35, label %L.36
L.35:
	%90 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%91 = call %symb.SymbNode* @symb_FindTop([0 x i8]* %90)
	store %symb.SymbNode* %91, %symb.SymbNode** %s
	%92 = call i8 @lex_Next()
	store i8 %92, i8* %tok2
	%93 = load %symb.SymbNode** %s
	%94 = icmp ne %symb.SymbNode* %93, null
	br i1 %94, label %L.38, label %L.37
L.38:
	%95 = load i8* %tok2
	%96 = zext i8 %95 to i32
	switch i32 %96, label %L.39 [
		i32 9, label %L.41
		i32 10, label %L.41
		i32 11, label %L.41
		i32 34, label %L.41
		i32 2, label %L.41
		i32 7, label %L.41
		i32 32, label %L.41
	]
L.41:
	store i8 41, i8* %tok
	br label %L.40
L.39:
	br label %L.40
L.40:
	br label %L.37
L.37:
	%97 = load i8* %tok
	%98 = icmp eq i8 %97, 41
	br i1 %98, label %L.43, label %L.44
L.43:
	%99 = load %symb.SymbNode** %s
	%100 = call %ast.AstNode* @stmt_AssignOrCall(%symb.SymbNode* %99)
	store %ast.AstNode* %100, %ast.AstNode** %stree
	%101 = load %ast.AstNode** %tree
	%102 = call %ast.AstNode* @ast_Child(%ast.AstNode* %101, %ast.AstNode* null)
	store %ast.AstNode* %102, %ast.AstNode** %tree
	%103 = load %ast.AstNode** %stree
	%104 = icmp ne %ast.AstNode* %103, null
	br i1 %104, label %L.46, label %L.45
L.46:
	%105 = load %ast.AstNode** %tree
	%106 = load %ast.AstNode** %stree
	%107 = call %ast.AstNode* @ast_New2(i8 84, %type.TypeNode* null, %ast.AstNode* %105, %ast.AstNode* %106)
	store %ast.AstNode* %107, %ast.AstNode** %tree
	br label %L.45
L.45:
	br label %L.42
L.44:
	%108 = load i8* %tok
	%109 = icmp eq i8 %108, 59
	br i1 %109, label %L.48, label %L.49
L.48:
	%110 = call %ast.AstNode* @stmt_If()
	store %ast.AstNode* %110, %ast.AstNode** %stree
	br label %L.47
L.49:
	%111 = call %ast.AstNode* @stmt_Statement()
	store %ast.AstNode* %111, %ast.AstNode** %stree
	br label %L.47
L.47:
	%112 = load %ast.AstNode** %tree
	%113 = load %ast.AstNode** %stree
	%114 = call %ast.AstNode* @ast_Child(%ast.AstNode* %112, %ast.AstNode* %113)
	store %ast.AstNode* %114, %ast.AstNode** %tree
	br label %L.42
L.42:
	br label %L.34
L.36:
	%115 = load %ast.AstNode** %tree
	%116 = call %ast.AstNode* @ast_Child(%ast.AstNode* %115, %ast.AstNode* null)
	store %ast.AstNode* %116, %ast.AstNode** %tree
	br label %L.34
L.34:
	%117 = load %ast.AstNode** %tree
	store %ast.AstNode* %117, %ast.AstNode** %rv.0
	br label %return
return:
	%118 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %118
}
define internal %ast.AstNode* @stmt_For() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%exit = alloca %ast.AstNode*
	%init = alloca %ast.AstNode*
	%body = alloca %ast.AstNode*
	%incr = alloca %ast.AstNode*
	%ix = alloca %ast.AstNode*
	%fm = alloca %ast.AstNode*
	%to = alloca %ast.AstNode*
	%by = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	%tok = alloca i8
	%s = alloca %symb.SymbNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 41
	br i1 %2, label %L.2, label %L.3
L.2:
	%3 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%4 = call %symb.SymbNode* @symb_Find([0 x i8]* %3)
	store %symb.SymbNode* %4, %symb.SymbNode** %s
	%5 = load %symb.SymbNode** %s
	%6 = icmp ne %symb.SymbNode* %5, null
	br i1 %6, label %L.4, label %L.5
L.4:
	%7 = load %symb.SymbNode** %s
	%8 = getelementptr %symb.SymbNode* %7, i32 0, i32 13
	%9 = load i8* %8
	%10 = icmp eq i8 %9, 3
	br label %L.5
L.5:
	%11 = phi i1 [ false, %L.2 ], [ %10, %L.4 ]
	br i1 %11, label %L.7, label %L.8
L.7:
	%12 = load %symb.SymbNode** %s
	%13 = getelementptr %symb.SymbNode* %12, i32 0, i32 1
	%14 = load %type.TypeNode** %13
	store %type.TypeNode* %14, %type.TypeNode** %t
	%15 = load %symb.SymbNode** %s
	%16 = getelementptr %symb.SymbNode* %15, i32 0, i32 1
	%17 = load %type.TypeNode** %16
	%18 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %17)
	%19 = call %ast.AstNode* @ast_New(i8 12, %type.TypeNode* %18)
	store %ast.AstNode* %19, %ast.AstNode** %ix
	%20 = load %symb.SymbNode** %s
	%21 = load %ast.AstNode** %ix
	%22 = getelementptr %ast.AstNode* %21, i32 0, i32 9
	store %symb.SymbNode* %20, %symb.SymbNode** %22
	br label %L.6
L.8:
	%23 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 19, [0 x i8]* %23)
	%24 = load %type.TypeNode** @type_unkntype
	store %type.TypeNode* %24, %type.TypeNode** %t
	store %ast.AstNode* null, %ast.AstNode** %ix
	br label %L.6
L.6:
	%25 = call i8 @lex_Next()
	store i8 %25, i8* %tok
	%26 = bitcast [3 x i8]* @stmt_fromlist to [0 x i8]*
	%27 = call i8 @lex_Keyword([0 x i8]* %26)
	store i8 %27, i8* %tok
	%28 = load i8* %tok
	%29 = zext i8 %28 to i32
	switch i32 %29, label %L.9 [
		i32 65, label %L.11
		i32 66, label %L.12
	]
L.11:
	%30 = call i8 @lex_Next()
	store i8 %30, i8* %tok
	store %ast.AstNode* null, %ast.AstNode** %fm
	%31 = load i8* @lex_Token
	%32 = icmp eq i8 %31, 41
	br i1 %32, label %L.14, label %L.13
L.14:
	%33 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%34 = call %symb.SymbNode* @symb_Find([0 x i8]* %33)
	store %symb.SymbNode* %34, %symb.SymbNode** %s
	%35 = load %symb.SymbNode** %s
	%36 = icmp ne %symb.SymbNode* %35, null
	br i1 %36, label %L.15, label %L.16
L.15:
	%37 = load %symb.SymbNode** %s
	%38 = getelementptr %symb.SymbNode* %37, i32 0, i32 13
	%39 = load i8* %38
	%40 = icmp eq i8 %39, 2
	br label %L.16
L.16:
	%41 = phi i1 [ false, %L.14 ], [ %40, %L.15 ]
	br i1 %41, label %L.18, label %L.17
L.18:
	%42 = load %symb.SymbNode** %s
	%43 = getelementptr %symb.SymbNode* %42, i32 0, i32 1
	%44 = load %type.TypeNode** %43
	%45 = load %symb.SymbNode** %s
	%46 = getelementptr %symb.SymbNode* %45, i32 0, i32 1
	%47 = load %type.TypeNode** %46
	%48 = getelementptr %type.TypeNode* %47, i32 0, i32 7
	%49 = load i64* %48
	%50 = call %ast.AstNode* @ast_Const(%type.TypeNode* %44, i64 %49)
	store %ast.AstNode* %50, %ast.AstNode** %fm
	%51 = load %symb.SymbNode** %s
	%52 = getelementptr %symb.SymbNode* %51, i32 0, i32 1
	%53 = load %type.TypeNode** %52
	%54 = load %symb.SymbNode** %s
	%55 = getelementptr %symb.SymbNode* %54, i32 0, i32 1
	%56 = load %type.TypeNode** %55
	%57 = getelementptr %type.TypeNode* %56, i32 0, i32 8
	%58 = load i64* %57
	%59 = call %ast.AstNode* @ast_Const(%type.TypeNode* %53, i64 %58)
	store %ast.AstNode* %59, %ast.AstNode** %to
	br label %L.17
L.17:
	%60 = call i8 @lex_Next()
	store i8 %60, i8* %tok
	br label %L.13
L.13:
	%61 = load %ast.AstNode** %fm
	%62 = icmp eq %ast.AstNode* %61, null
	br i1 %62, label %L.20, label %L.19
L.20:
	%63 = load %type.TypeNode** %t
	%64 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %63)
	store %ast.AstNode* %64, %ast.AstNode** %fm
	%65 = call i8 @lex_Expect(i8 6)
	%66 = load %type.TypeNode** %t
	%67 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %66)
	store %ast.AstNode* %67, %ast.AstNode** %to
	br label %L.19
L.19:
	%68 = load %type.TypeNode** %t
	%69 = call %ast.AstNode* @ast_Const(%type.TypeNode* %68, i64 1)
	store %ast.AstNode* %69, %ast.AstNode** %by
	%70 = call i8 @lex_Expect(i8 62)
	br label %L.10
L.12:
	%71 = call i8 @lex_Next()
	store i8 %71, i8* %tok
	%72 = load %type.TypeNode** %t
	%73 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %72)
	store %ast.AstNode* %73, %ast.AstNode** %fm
	%74 = call i8 @lex_Expect(i8 67)
	%75 = load %type.TypeNode** %t
	%76 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %75)
	store %ast.AstNode* %76, %ast.AstNode** %to
	%77 = bitcast [2 x i8]* @stmt_bylist to [0 x i8]*
	%78 = call i8 @lex_Keyword([0 x i8]* %77)
	store i8 %78, i8* %tok
	%79 = load i8* %tok
	%80 = icmp eq i8 %79, 68
	br i1 %80, label %L.22, label %L.23
L.22:
	%81 = call i8 @lex_Next()
	store i8 %81, i8* %tok
	%82 = load %type.TypeNode** %t
	%83 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %82)
	store %ast.AstNode* %83, %ast.AstNode** %by
	br label %L.21
L.23:
	%84 = load %type.TypeNode** %t
	%85 = call %ast.AstNode* @ast_Const(%type.TypeNode* %84, i64 1)
	store %ast.AstNode* %85, %ast.AstNode** %by
	br label %L.21
L.21:
	%86 = call i8 @lex_Expect(i8 62)
	br label %L.10
L.9:
	call void @lex_Error(i8 77)
	%87 = call i8 @lex_Next()
	store i8 %87, i8* %tok
	br label %L.10
L.10:
	store %ast.AstNode* null, %ast.AstNode** %init
	store %ast.AstNode* null, %ast.AstNode** %exit
	store %ast.AstNode* null, %ast.AstNode** %incr
	%88 = load %ast.AstNode** %ix
	%89 = icmp ne %ast.AstNode* %88, null
	br i1 %89, label %L.25, label %L.24
L.25:
	%90 = load %ast.AstNode** %fm
	%91 = icmp ne %ast.AstNode* %90, null
	br i1 %91, label %L.27, label %L.26
L.27:
	%92 = load %ast.AstNode** %fm
	%93 = load %ast.AstNode** %ix
	%94 = getelementptr %ast.AstNode* %93, i32 0, i32 8
	%95 = load %type.TypeNode** %94
	%96 = getelementptr %type.TypeNode* %95, i32 0, i32 0
	%97 = load %type.TypeNode** %96
	%98 = bitcast %type.TypeNode* %97 to %type.TypeNode*
	%99 = call %ast.AstNode* @expr_Adjust(%ast.AstNode* %92, %type.TypeNode* %98)
	store %ast.AstNode* %99, %ast.AstNode** %fm
	%100 = load %type.TypeNode** %t
	%101 = load %ast.AstNode** %ix
	%102 = load %ast.AstNode** %fm
	%103 = call %ast.AstNode* @ast_New2(i8 28, %type.TypeNode* %100, %ast.AstNode* %101, %ast.AstNode* %102)
	store %ast.AstNode* %103, %ast.AstNode** %init
	br label %L.26
L.26:
	%104 = load %ast.AstNode** %to
	%105 = icmp ne %ast.AstNode* %104, null
	br i1 %105, label %L.29, label %L.28
L.29:
	%106 = load %type.TypeNode** %t
	%107 = load %ast.AstNode** %ix
	%108 = call %ast.AstNode* @expr_Load(%ast.AstNode* %107)
	%109 = load %ast.AstNode** %to
	%110 = call %ast.AstNode* @ast_New2(i8 57, %type.TypeNode* %106, %ast.AstNode* %108, %ast.AstNode* %109)
	%111 = call %ast.AstNode* @ast_New1(i8 86, %type.TypeNode* null, %ast.AstNode* %110)
	store %ast.AstNode* %111, %ast.AstNode** %exit
	br label %L.28
L.28:
	%112 = load %type.TypeNode** %t
	%113 = load %ast.AstNode** %ix
	%114 = load %type.TypeNode** %t
	%115 = load %ast.AstNode** %ix
	%116 = call %ast.AstNode* @expr_Load(%ast.AstNode* %115)
	%117 = load %ast.AstNode** %by
	%118 = call %ast.AstNode* @ast_New2(i8 49, %type.TypeNode* %114, %ast.AstNode* %116, %ast.AstNode* %117)
	%119 = call %ast.AstNode* @ast_New2(i8 28, %type.TypeNode* %112, %ast.AstNode* %113, %ast.AstNode* %118)
	store %ast.AstNode* %119, %ast.AstNode** %incr
	br label %L.24
L.24:
	%120 = call %ast.AstNode* @stmt_Statement()
	store %ast.AstNode* %120, %ast.AstNode** %body
	%121 = load %ast.AstNode** %exit
	%122 = load %ast.AstNode** %body
	%123 = load %ast.AstNode** %incr
	%124 = call %ast.AstNode* @ast_New3(i8 84, %type.TypeNode* null, %ast.AstNode* %121, %ast.AstNode* %122, %ast.AstNode* %123)
	store %ast.AstNode* %124, %ast.AstNode** %body
	%125 = load %ast.AstNode** %body
	%126 = call %ast.AstNode* @ast_New1(i8 85, %type.TypeNode* null, %ast.AstNode* %125)
	store %ast.AstNode* %126, %ast.AstNode** %body
	%127 = load %ast.AstNode** %init
	%128 = load %ast.AstNode** %body
	%129 = call %ast.AstNode* @ast_New2(i8 84, %type.TypeNode* null, %ast.AstNode* %127, %ast.AstNode* %128)
	store %ast.AstNode* %129, %ast.AstNode** %tree
	br label %L.1
L.3:
	call void @lex_ErrorT(i8 17, i8 41)
	br label %L.1
L.1:
	%130 = load %ast.AstNode** %tree
	store %ast.AstNode* %130, %ast.AstNode** %rv.0
	br label %return
return:
	%131 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %131
}
define internal %ast.AstNode* @stmt_While() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%ctree = alloca %ast.AstNode*
	%0 = load %type.TypeNode** @type_booltype
	%1 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %0)
	store %ast.AstNode* %1, %ast.AstNode** %ctree
	%2 = load %ast.AstNode** %ctree
	%3 = icmp ne %ast.AstNode* %2, null
	br i1 %3, label %L.2, label %L.1
L.2:
	%4 = load %ast.AstNode** %ctree
	%5 = getelementptr %ast.AstNode* %4, i32 0, i32 8
	%6 = load %type.TypeNode** %5
	%7 = load %type.TypeNode** @type_booltype
	%8 = call i8 @type_Compat(%type.TypeNode* %6, %type.TypeNode* %7)
	%9 = icmp ne i8 %8, 0
	br i1 %9, label %L.4, label %L.5
L.4:
	%10 = load %ast.AstNode** %ctree
	%11 = call %ast.AstNode* @ast_ForceBoolean(%ast.AstNode* %10)
	store %ast.AstNode* %11, %ast.AstNode** %ctree
	br label %L.3
L.5:
	call void @lex_Error(i8 48)
	br label %L.3
L.3:
	%12 = load %ast.AstNode** %ctree
	%13 = call %ast.AstNode* @ast_New1(i8 77, %type.TypeNode* null, %ast.AstNode* %12)
	store %ast.AstNode* %13, %ast.AstNode** %ctree
	%14 = load %ast.AstNode** %ctree
	%15 = call %ast.AstNode* @ast_New1(i8 86, %type.TypeNode* null, %ast.AstNode* %14)
	store %ast.AstNode* %15, %ast.AstNode** %ctree
	br label %L.1
L.1:
	%16 = load i8* @stmt_LoopLevel
	%17 = add i8 %16, 1
	store i8 %17, i8* @stmt_LoopLevel
	%18 = call i8 @lex_Expect(i8 62)
	%19 = call %ast.AstNode* @stmt_Statement()
	store %ast.AstNode* %19, %ast.AstNode** %tree
	%20 = load %ast.AstNode** %ctree
	%21 = load %ast.AstNode** %tree
	%22 = call %ast.AstNode* @ast_New2(i8 84, %type.TypeNode* null, %ast.AstNode* %20, %ast.AstNode* %21)
	store %ast.AstNode* %22, %ast.AstNode** %tree
	%23 = load %ast.AstNode** %tree
	%24 = call %ast.AstNode* @ast_New1(i8 85, %type.TypeNode* null, %ast.AstNode* %23)
	store %ast.AstNode* %24, %ast.AstNode** %tree
	%25 = load i8* @stmt_LoopLevel
	%26 = icmp ugt i8 %25, 0
	br i1 %26, label %L.7, label %L.6
L.7:
	%27 = load i8* @stmt_LoopLevel
	%28 = sub i8 %27, 1
	store i8 %28, i8* @stmt_LoopLevel
	br label %L.6
L.6:
	%29 = load %ast.AstNode** %tree
	store %ast.AstNode* %29, %ast.AstNode** %rv.0
	br label %return
return:
	%30 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %30
}
define internal %ast.AstNode* @stmt_Do() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%ctree = alloca %ast.AstNode*
	%0 = load i8* @stmt_LoopLevel
	%1 = add i8 %0, 1
	store i8 %1, i8* @stmt_LoopLevel
	%2 = call %ast.AstNode* @stmt_Statement()
	store %ast.AstNode* %2, %ast.AstNode** %tree
	%3 = call i8 @lex_Expect(i8 54)
	%4 = load %type.TypeNode** @type_booltype
	%5 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %4)
	store %ast.AstNode* %5, %ast.AstNode** %ctree
	%6 = load %ast.AstNode** %ctree
	%7 = icmp ne %ast.AstNode* %6, null
	br i1 %7, label %L.2, label %L.1
L.2:
	%8 = load %ast.AstNode** %ctree
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 8
	%10 = load %type.TypeNode** %9
	%11 = load %type.TypeNode** @type_booltype
	%12 = call i8 @type_Compat(%type.TypeNode* %10, %type.TypeNode* %11)
	%13 = icmp ne i8 %12, 0
	br i1 %13, label %L.4, label %L.5
L.4:
	%14 = load %ast.AstNode** %ctree
	%15 = call %ast.AstNode* @ast_ForceBoolean(%ast.AstNode* %14)
	store %ast.AstNode* %15, %ast.AstNode** %ctree
	br label %L.3
L.5:
	call void @lex_Error(i8 48)
	br label %L.3
L.3:
	%16 = load %ast.AstNode** %ctree
	%17 = call %ast.AstNode* @ast_New1(i8 77, %type.TypeNode* null, %ast.AstNode* %16)
	store %ast.AstNode* %17, %ast.AstNode** %ctree
	%18 = load %ast.AstNode** %ctree
	%19 = call %ast.AstNode* @ast_New1(i8 86, %type.TypeNode* null, %ast.AstNode* %18)
	store %ast.AstNode* %19, %ast.AstNode** %ctree
	br label %L.1
L.1:
	%20 = load %ast.AstNode** %tree
	%21 = load %ast.AstNode** %ctree
	%22 = call %ast.AstNode* @ast_New2(i8 84, %type.TypeNode* null, %ast.AstNode* %20, %ast.AstNode* %21)
	store %ast.AstNode* %22, %ast.AstNode** %tree
	%23 = load %ast.AstNode** %tree
	%24 = call %ast.AstNode* @ast_New1(i8 85, %type.TypeNode* null, %ast.AstNode* %23)
	store %ast.AstNode* %24, %ast.AstNode** %tree
	%25 = load i8* @stmt_LoopLevel
	%26 = icmp ugt i8 %25, 0
	br i1 %26, label %L.7, label %L.6
L.7:
	%27 = load i8* @stmt_LoopLevel
	%28 = sub i8 %27, 1
	store i8 %28, i8* @stmt_LoopLevel
	br label %L.6
L.6:
	%29 = load %ast.AstNode** %tree
	store %ast.AstNode* %29, %ast.AstNode** %rv.0
	br label %return
return:
	%30 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %30
}
define internal %ast.AstNode* @stmt_Loop() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%stree = alloca %ast.AstNode*
	%tok = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* @stmt_LoopLevel
	%2 = add i8 %1, 1
	store i8 %2, i8* @stmt_LoopLevel
	%3 = call %ast.AstNode* @ast_New(i8 85, %type.TypeNode* null)
	store %ast.AstNode* %3, %ast.AstNode** %tree
	%4 = call %ast.AstNode* @stmt_Statement()
	store %ast.AstNode* %4, %ast.AstNode** %stree
	%5 = load %ast.AstNode** %tree
	%6 = load %ast.AstNode** %stree
	%7 = call %ast.AstNode* @ast_Child(%ast.AstNode* %5, %ast.AstNode* %6)
	store %ast.AstNode* %7, %ast.AstNode** %tree
	%8 = load i8* @stmt_LoopLevel
	%9 = icmp ugt i8 %8, 0
	br i1 %9, label %L.2, label %L.1
L.2:
	%10 = load i8* @stmt_LoopLevel
	%11 = sub i8 %10, 1
	store i8 %11, i8* @stmt_LoopLevel
	br label %L.1
L.1:
	%12 = load %ast.AstNode** %tree
	store %ast.AstNode* %12, %ast.AstNode** %rv.0
	br label %return
return:
	%13 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %13
}
define internal %ast.AstNode* @stmt_Exit() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%wtree = alloca %ast.AstNode*
	%ctree = alloca %ast.AstNode*
	%tok = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* @stmt_LoopLevel
	%2 = icmp eq i8 %1, 0
	br i1 %2, label %L.2, label %L.1
L.2:
	call void @lex_Error(i8 57)
	br label %L.1
L.1:
	%3 = call %ast.AstNode* @ast_New(i8 86, %type.TypeNode* null)
	store %ast.AstNode* %3, %ast.AstNode** %tree
	%4 = load %type.TypeNode** @type_booltype
	%5 = call %ast.AstNode* @expr_Bool(%type.TypeNode* %4)
	store %ast.AstNode* %5, %ast.AstNode** %ctree
	%6 = load %ast.AstNode** %ctree
	%7 = icmp ne %ast.AstNode* %6, null
	br i1 %7, label %L.4, label %L.3
L.4:
	%8 = load %ast.AstNode** %ctree
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 8
	%10 = load %type.TypeNode** %9
	%11 = load %type.TypeNode** @type_booltype
	%12 = call i8 @type_Compat(%type.TypeNode* %10, %type.TypeNode* %11)
	%13 = icmp ne i8 %12, 0
	br i1 %13, label %L.6, label %L.7
L.6:
	%14 = load %ast.AstNode** %ctree
	%15 = call %ast.AstNode* @ast_ForceBoolean(%ast.AstNode* %14)
	store %ast.AstNode* %15, %ast.AstNode** %ctree
	br label %L.5
L.7:
	call void @lex_Error(i8 48)
	br label %L.5
L.5:
	br label %L.3
L.3:
	%16 = load %ast.AstNode** %tree
	%17 = load %ast.AstNode** %ctree
	%18 = call %ast.AstNode* @ast_Child(%ast.AstNode* %16, %ast.AstNode* %17)
	store %ast.AstNode* %18, %ast.AstNode** %tree
	%19 = bitcast [2 x i8]* @stmt_withlist to [0 x i8]*
	%20 = call i8 @lex_Keyword([0 x i8]* %19)
	store i8 %20, i8* %tok
	%21 = load i8* %tok
	%22 = icmp eq i8 %21, 63
	br i1 %22, label %L.9, label %L.10
L.9:
	%23 = call i8 @lex_Next()
	store i8 %23, i8* %tok
	%24 = call %ast.AstNode* @stmt_Statement()
	store %ast.AstNode* %24, %ast.AstNode** %wtree
	%25 = load %ast.AstNode** %tree
	%26 = load %ast.AstNode** %wtree
	%27 = call %ast.AstNode* @ast_Child(%ast.AstNode* %25, %ast.AstNode* %26)
	br label %L.8
L.10:
	%28 = call i8 @lex_Expect(i8 4)
	br label %L.8
L.8:
	%29 = load %ast.AstNode** %tree
	store %ast.AstNode* %29, %ast.AstNode** %rv.0
	br label %return
return:
	%30 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %30
}
@S.604 = internal constant [32 x i8] c"Fix cross package forward proc\0A\00"
define internal %ast.AstNode* @stmt_Alias() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%s = alloca %symb.SymbNode*
	%ns = alloca %symb.SymbNode*
	%tok = alloca i8
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	br label %L.1
L.1:
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 41
	br i1 %2, label %L.4, label %L.5
L.4:
	%3 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%4 = call %symb.SymbNode* @symb_FindTop([0 x i8]* %3)
	store %symb.SymbNode* %4, %symb.SymbNode** %s
	%5 = load %symb.SymbNode** %s
	%6 = icmp ne %symb.SymbNode* %5, null
	br i1 %6, label %L.7, label %L.8
L.7:
	br label %L.9
L.9:
	%7 = call i8 @lex_Next()
	store i8 %7, i8* %tok
	%8 = load %symb.SymbNode** %s
	%9 = icmp eq %symb.SymbNode* %8, null
	br i1 %9, label %L.15, label %L.14
L.14:
	%10 = load i8* %tok
	%11 = icmp ne i8 %10, 2
	br label %L.15
L.15:
	%12 = phi i1 [ true, %L.9 ], [ %11, %L.14 ]
	br i1 %12, label %L.13, label %L.12
L.12:
	%13 = load %symb.SymbNode** %s
	%14 = getelementptr %symb.SymbNode* %13, i32 0, i32 13
	%15 = load i8* %14
	%16 = icmp ne i8 %15, 6
	br label %L.13
L.13:
	%17 = phi i1 [ true, %L.15 ], [ %16, %L.12 ]
	br i1 %17, label %L.10, label %L.11
L.11:
	%18 = call i8 @lex_Next()
	store i8 %18, i8* %tok
	%19 = load i8* %tok
	%20 = icmp eq i8 %19, 41
	br i1 %20, label %L.17, label %L.18
L.17:
	%21 = load %symb.SymbNode** %s
	%22 = getelementptr %symb.SymbNode* %21, i32 0, i32 5
	%23 = load %symb.SymbNode** %22
	%24 = bitcast %symb.SymbNode* %23 to %symb.SymbNode*
	%25 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%26 = call %symb.SymbNode* @symb_FindLocal(%symb.SymbNode* %24, [0 x i8]* %25)
	store %symb.SymbNode* %26, %symb.SymbNode** %s
	%27 = load %symb.SymbNode** %s
	%28 = icmp eq %symb.SymbNode* %27, null
	br i1 %28, label %L.20, label %L.19
L.20:
	%29 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 19, [0 x i8]* %29)
	br label %L.19
L.19:
	br label %L.16
L.18:
	call void @lex_Error(i8 18)
	br label %L.16
L.16:
	br label %L.9
L.10:
	br label %L.6
L.8:
	%30 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 19, [0 x i8]* %30)
	%31 = call i8 @lex_Next()
	store i8 %31, i8* %tok
	br label %L.6
L.6:
	%32 = bitcast [2 x i8]* @stmt_aslist to [0 x i8]*
	%33 = call i8 @lex_Keyword([0 x i8]* %32)
	store i8 %33, i8* %tok
	%34 = load i8* %tok
	%35 = icmp eq i8 %34, 64
	br i1 %35, label %L.22, label %L.23
L.22:
	%36 = call i8 @lex_Next()
	store i8 %36, i8* %tok
	%37 = load i8* %tok
	%38 = icmp eq i8 %37, 41
	br i1 %38, label %L.25, label %L.26
L.25:
	%39 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%40 = call %symb.SymbNode* @symb_FindTop([0 x i8]* %39)
	store %symb.SymbNode* %40, %symb.SymbNode** %ns
	%41 = load %symb.SymbNode** %ns
	%42 = icmp eq %symb.SymbNode* %41, null
	br i1 %42, label %L.28, label %L.29
L.28:
	%43 = load %symb.SymbNode** %s
	%44 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%45 = call %symb.SymbNode* @symb_Clone(%symb.SymbNode* %43, [0 x i8]* %44)
	store %symb.SymbNode* %45, %symb.SymbNode** %s
	%46 = call i8 @lex_Next()
	store i8 %46, i8* %tok
	br label %L.27
L.29:
	%47 = call i8 @lex_Next()
	store i8 %47, i8* %tok
	%48 = load %symb.SymbNode** %ns
	%49 = getelementptr %symb.SymbNode* %48, i32 0, i32 13
	%50 = load i8* %49
	%51 = icmp eq i8 %50, 6
	br i1 %51, label %L.31, label %L.32
L.31:
	%52 = load i8* %tok
	%53 = icmp eq i8 %52, 2
	br i1 %53, label %L.34, label %L.35
L.34:
	%54 = call i8 @lex_Next()
	store i8 %54, i8* %tok
	%55 = load i8* %tok
	%56 = icmp eq i8 %55, 41
	br i1 %56, label %L.37, label %L.38
L.37:
	%57 = load %symb.SymbNode** %ns
	%58 = getelementptr %symb.SymbNode* %57, i32 0, i32 5
	%59 = load %symb.SymbNode** %58
	%60 = bitcast %symb.SymbNode* %59 to %symb.SymbNode*
	%61 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%62 = call %symb.SymbNode* @symb_FindLocal(%symb.SymbNode* %60, [0 x i8]* %61)
	store %symb.SymbNode* %62, %symb.SymbNode** %ns
	%63 = load %symb.SymbNode** %ns
	%64 = icmp ne %symb.SymbNode* %63, null
	br i1 %64, label %L.40, label %L.41
L.40:
	%65 = load %symb.SymbNode** %s
	%66 = getelementptr %symb.SymbNode* %65, i32 0, i32 13
	%67 = load i8* %66
	%68 = icmp eq i8 %67, 2
	br i1 %68, label %L.42, label %L.43
L.42:
	%69 = load %symb.SymbNode** %ns
	%70 = getelementptr %symb.SymbNode* %69, i32 0, i32 13
	%71 = load i8* %70
	%72 = icmp eq i8 %71, 2
	br label %L.43
L.43:
	%73 = phi i1 [ false, %L.40 ], [ %72, %L.42 ]
	br i1 %73, label %L.45, label %L.46
L.45:
	%74 = load %symb.SymbNode** %ns
	%75 = load %symb.SymbNode** %s
	%76 = getelementptr %symb.SymbNode* %75, i32 0, i32 1
	%77 = load %type.TypeNode** %76
	call void @type_FwdFix(%symb.SymbNode* %74, %type.TypeNode* %77)
	br label %L.44
L.46:
	%78 = load %symb.SymbNode** %s
	%79 = getelementptr %symb.SymbNode* %78, i32 0, i32 13
	%80 = load i8* %79
	%81 = icmp eq i8 %80, 5
	br i1 %81, label %L.49, label %L.50
L.49:
	%82 = load %symb.SymbNode** %ns
	%83 = getelementptr %symb.SymbNode* %82, i32 0, i32 13
	%84 = load i8* %83
	%85 = icmp eq i8 %84, 5
	br label %L.50
L.50:
	%86 = phi i1 [ false, %L.46 ], [ %85, %L.49 ]
	br i1 %86, label %L.47, label %L.48
L.47:
	%87 = load %symb.SymbNode** %ns
	%88 = getelementptr %symb.SymbNode* %87, i32 0, i32 15
	%89 = load i8* %88
	%90 = icmp ne i8 %89, 0
	br label %L.48
L.48:
	%91 = phi i1 [ false, %L.50 ], [ %90, %L.47 ]
	br i1 %91, label %L.52, label %L.53
L.52:
	%92 = getelementptr [32 x i8]* @S.604
	%93 = bitcast [32 x i8]* %92 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %93)
	%94 = load %symb.SymbNode** %s
	call void @symb_DumpS(%symb.SymbNode* %94)
	%95 = load %symb.SymbNode** %ns
	call void @symb_DumpS(%symb.SymbNode* %95)
	br label %L.51
L.53:
	call void @lex_Error(i8 26)
	br label %L.51
L.51:
	br label %L.44
L.44:
	br label %L.39
L.41:
	%96 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 19, [0 x i8]* %96)
	br label %L.39
L.39:
	%97 = call i8 @lex_Next()
	store i8 %97, i8* %tok
	br label %L.36
L.38:
	call void @lex_Error(i8 18)
	br label %L.36
L.36:
	br label %L.33
L.35:
	%98 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 20, [0 x i8]* %98)
	br label %L.33
L.33:
	br label %L.30
L.32:
	%99 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 20, [0 x i8]* %99)
	br label %L.30
L.30:
	br label %L.27
L.27:
	br label %L.24
L.26:
	call void @lex_Error(i8 18)
	br label %L.24
L.24:
	br label %L.21
L.23:
	call void @lex_ErrorT(i8 17, i8 64)
	br label %L.21
L.21:
	br label %L.3
L.5:
	call void @lex_Error(i8 18)
	br label %L.3
L.3:
	%100 = load i8* %tok
	%101 = icmp ne i8 %100, 5
	br i1 %101, label %L.2, label %L.54
L.54:
	%102 = call i8 @lex_Next()
	store i8 %102, i8* %tok
	br label %L.1
L.2:
	%103 = call i8 @lex_Expect(i8 4)
	store i8 %103, i8* %tok
	store %ast.AstNode* null, %ast.AstNode** %rv.0
	br label %return
return:
	%104 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %104
}
define internal %ast.AstNode* @stmt_ErrorStmt() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tok = alloca i8
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 40
	br i1 %2, label %L.2, label %L.3
L.2:
	%3 = bitcast [4096 x i8]* @lex_StringBuf to [0 x i8]*
	call void @lex_ErrorS(i8 85, [0 x i8]* %3)
	%4 = call i8 @lex_Next()
	store i8 %4, i8* %tok
	br label %L.1
L.3:
	call void @lex_ErrorT(i8 17, i8 40)
	br label %L.1
L.1:
	store %ast.AstNode* null, %ast.AstNode** %rv.0
	br label %return
return:
	%5 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %5
}
@stmt_stmtlist = internal constant [15 x i8] [ i8 42, i8 43, i8 44, i8 53, i8 54, i8 56, i8 62, i8 55, i8 57, i8 52, i8 50, i8 46, i8 47, i8 51, i8 0 ], align 1
define internal %ast.AstNode* @stmt_Statement() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%stree = alloca %ast.AstNode*
	%tok = alloca i8
	%tok2 = alloca i8
	%s = alloca %symb.SymbNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 36
	br i1 %2, label %L.2, label %L.3
L.2:
	%3 = call i8 @lex_Next()
	store i8 %3, i8* %tok
	%4 = call %ast.AstNode* @ast_New(i8 84, %type.TypeNode* null)
	store %ast.AstNode* %4, %ast.AstNode** %tree
	br label %L.4
L.4:
	%5 = load i8* %tok
	%6 = icmp ne i8 %5, 37
	br i1 %6, label %L.7, label %L.8
L.7:
	%7 = load i8* %tok
	%8 = icmp ne i8 %7, 1
	br label %L.8
L.8:
	%9 = phi i1 [ false, %L.4 ], [ %8, %L.7 ]
	%10 = xor i1 %9, true
	br i1 %10, label %L.5, label %L.6
L.6:
	%11 = call %ast.AstNode* @stmt_Statement()
	store %ast.AstNode* %11, %ast.AstNode** %stree
	%12 = load %ast.AstNode** %stree
	%13 = icmp ne %ast.AstNode* %12, null
	br i1 %13, label %L.10, label %L.9
L.10:
	%14 = load %ast.AstNode** %tree
	%15 = load %ast.AstNode** %stree
	%16 = call %ast.AstNode* @ast_Child(%ast.AstNode* %14, %ast.AstNode* %15)
	store %ast.AstNode* %16, %ast.AstNode** %tree
	br label %L.9
L.9:
	%17 = load i8* @lex_Token
	store i8 %17, i8* %tok
	br label %L.4
L.5:
	%18 = call i8 @lex_Expect(i8 37)
	store i8 %18, i8* %tok
	br label %L.1
L.3:
	%19 = bitcast [15 x i8]* @stmt_stmtlist to [0 x i8]*
	%20 = call i8 @lex_Keyword([0 x i8]* %19)
	store i8 %20, i8* %tok
	%21 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%22 = call %symb.SymbNode* @symb_FindTop([0 x i8]* %21)
	store %symb.SymbNode* %22, %symb.SymbNode** %s
	%23 = call i8 @lex_Next()
	store i8 %23, i8* %tok2
	%24 = load i8* %tok
	%25 = icmp ugt i8 %24, 41
	br i1 %25, label %L.11, label %L.12
L.11:
	%26 = load %symb.SymbNode** %s
	%27 = icmp ne %symb.SymbNode* %26, null
	br label %L.12
L.12:
	%28 = phi i1 [ false, %L.3 ], [ %27, %L.11 ]
	br i1 %28, label %L.14, label %L.13
L.14:
	%29 = load i8* %tok2
	%30 = zext i8 %29 to i32
	switch i32 %30, label %L.15 [
		i32 9, label %L.17
		i32 10, label %L.17
		i32 11, label %L.17
		i32 34, label %L.17
		i32 2, label %L.17
		i32 7, label %L.17
		i32 5, label %L.17
		i32 32, label %L.18
	]
L.17:
	store i8 41, i8* %tok
	br label %L.16
L.18:
	%31 = load %symb.SymbNode** %s
	%32 = getelementptr %symb.SymbNode* %31, i32 0, i32 13
	%33 = load i8* %32
	%34 = icmp eq i8 %33, 5
	br i1 %34, label %L.19, label %L.20
L.19:
	%35 = load i8* %tok
	%36 = icmp uge i8 %35, 52
	br i1 %36, label %L.21, label %L.22
L.21:
	%37 = load i8* %tok
	%38 = icmp ule i8 %37, 54
	br label %L.22
L.22:
	%39 = phi i1 [ false, %L.19 ], [ %38, %L.21 ]
	br label %L.20
L.20:
	%40 = phi i1 [ false, %L.18 ], [ %39, %L.22 ]
	br i1 %40, label %L.24, label %L.25
L.24:
	%41 = getelementptr %A.3* @feature, i32 0, i32 6
	%42 = load i8* %41
	%43 = icmp ne i8 %42, 0
	br i1 %43, label %L.27, label %L.26
L.27:
	%44 = load i8* %tok
	call void @lex_ErrorT(i8 6, i8 %44)
	br label %L.26
L.26:
	br label %L.23
L.25:
	store i8 41, i8* %tok
	br label %L.23
L.23:
	br label %L.16
L.15:
	br label %L.16
L.16:
	br label %L.13
L.13:
	%45 = load i8* %tok
	%46 = zext i8 %45 to i32
	switch i32 %46, label %L.28 [
		i32 41, label %L.30
		i32 42, label %L.31
		i32 43, label %L.32
		i32 44, label %L.33
		i32 53, label %L.34
		i32 55, label %L.35
		i32 54, label %L.36
		i32 62, label %L.37
		i32 56, label %L.38
		i32 57, label %L.39
		i32 52, label %L.40
		i32 50, label %L.41
		i32 46, label %L.42
		i32 47, label %L.43
		i32 51, label %L.44
		i32 4, label %L.45
	]
L.30:
	%47 = load %symb.SymbNode** %s
	%48 = icmp ne %symb.SymbNode* %47, null
	br i1 %48, label %L.47, label %L.48
L.47:
	%49 = load %symb.SymbNode** %s
	%50 = call %ast.AstNode* @stmt_AssignOrCall(%symb.SymbNode* %49)
	store %ast.AstNode* %50, %ast.AstNode** %tree
	br label %L.46
L.48:
	%51 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%52 = call i8 @symb_IsAnon([0 x i8]* %51)
	%53 = icmp ne i8 %52, 0
	br i1 %53, label %L.50, label %L.51
L.50:
	%54 = call %ast.AstNode* @stmt_Assign(%ast.AstNode* null)
	store %ast.AstNode* %54, %ast.AstNode** %tree
	br label %L.49
L.51:
	%55 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 34, [0 x i8]* %55)
	%56 = bitcast [15 x i8]* @stmt_stmtlist to [0 x i8]*
	%57 = call i8 @lex_Skip([0 x i8]* %56)
	store i8 %57, i8* %tok
	br label %L.49
L.49:
	br label %L.46
L.46:
	br label %L.29
L.31:
	%58 = call %ast.AstNode* @stmt_TypeDecl()
	store %ast.AstNode* %58, %ast.AstNode** %tree
	br label %L.29
L.32:
	%59 = call %ast.AstNode* @stmt_VarDecl()
	store %ast.AstNode* %59, %ast.AstNode** %tree
	br label %L.29
L.33:
	%60 = call %ast.AstNode* @stmt_ConstDecl()
	store %ast.AstNode* %60, %ast.AstNode** %tree
	br label %L.29
L.34:
	%61 = call %ast.AstNode* @stmt_If()
	store %ast.AstNode* %61, %ast.AstNode** %tree
	br label %L.29
L.35:
	%62 = call %ast.AstNode* @stmt_For()
	store %ast.AstNode* %62, %ast.AstNode** %tree
	br label %L.29
L.36:
	%63 = call %ast.AstNode* @stmt_While()
	store %ast.AstNode* %63, %ast.AstNode** %tree
	br label %L.29
L.37:
	%64 = call %ast.AstNode* @stmt_Do()
	store %ast.AstNode* %64, %ast.AstNode** %tree
	br label %L.29
L.38:
	%65 = call %ast.AstNode* @stmt_Loop()
	store %ast.AstNode* %65, %ast.AstNode** %tree
	br label %L.29
L.39:
	%66 = call %ast.AstNode* @stmt_Exit()
	store %ast.AstNode* %66, %ast.AstNode** %tree
	br label %L.29
L.40:
	%67 = call %ast.AstNode* @stmt_Return()
	store %ast.AstNode* %67, %ast.AstNode** %tree
	br label %L.29
L.41:
	%68 = call %ast.AstNode* @stmt_Asm()
	store %ast.AstNode* %68, %ast.AstNode** %tree
	br label %L.29
L.42:
	%69 = call %ast.AstNode* @stmt_Alias()
	store %ast.AstNode* %69, %ast.AstNode** %tree
	br label %L.29
L.43:
	%70 = call %ast.AstNode* @stmt_ErrorStmt()
	store %ast.AstNode* %70, %ast.AstNode** %tree
	br label %L.29
L.44:
	%71 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%72 = call %symb.SymbNode* @symb_FindTop([0 x i8]* %71)
	store %symb.SymbNode* %72, %symb.SymbNode** %s
	%73 = call i8 @lex_Next()
	store i8 %73, i8* %tok2
	%74 = load %symb.SymbNode** %s
	%75 = call %ast.AstNode* @stmt_AssignOrCall(%symb.SymbNode* %74)
	store %ast.AstNode* %75, %ast.AstNode** %tree
	br label %L.29
L.45:
	br label %L.29
L.28:
	%76 = load i8* %tok
	call void @lex_ErrorT(i8 35, i8 %76)
	br label %L.29
L.29:
	br label %L.1
L.1:
	%77 = load %ast.AstNode** %tree
	store %ast.AstNode* %77, %ast.AstNode** %rv.0
	br label %return
return:
	%78 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %78
}
define internal %ast.AstNode* @stmt_Procedure() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%tok = alloca i8
	%t = alloca %type.TypeNode*
	%mt = alloca %type.TypeNode*
	%s = alloca %symb.SymbNode*
	%ms = alloca %symb.SymbNode*
	%fs = alloca %symb.SymbNode*
	%es = alloca %symb.SymbNode*
	%ft = alloca %type.TypeListEntry*
	store %ast.AstNode* null, %ast.AstNode** %tree
	store %type.TypeNode* null, %type.TypeNode** %mt
	store %symb.SymbNode* null, %symb.SymbNode** %ms
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 32
	br i1 %2, label %L.2, label %L.1
L.2:
	%3 = call i8 @lex_Next()
	store i8 %3, i8* %tok
	%4 = load i8* %tok
	%5 = icmp eq i8 %4, 41
	br i1 %5, label %L.4, label %L.5
L.4:
	%6 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%7 = call %symb.SymbNode* @symb_New(i8 3, [0 x i8]* %6, i8 2)
	store %symb.SymbNode* %7, %symb.SymbNode** %ms
	%8 = load %symb.SymbNode** %ms
	%9 = getelementptr %symb.SymbNode* %8, i32 0, i32 14
	store i8 0, i8* %9
	%10 = load %type.TypeNode** @type_unkntype
	store %type.TypeNode* %10, %type.TypeNode** %t
	%11 = call i8 @lex_Next()
	store i8 %11, i8* %tok
	%12 = load i8* %tok
	%13 = icmp eq i8 %12, 3
	br i1 %13, label %L.7, label %L.8
L.7:
	%14 = call i8 @lex_Next()
	store i8 %14, i8* %tok
	%15 = load i8* %tok
	%16 = zext i8 %15 to i32
	switch i32 %16, label %L.9 [
		i32 7, label %L.11
		i32 41, label %L.12
	]
L.11:
	%17 = call %type.TypeNode* @type_Ref()
	store %type.TypeNode* %17, %type.TypeNode** %t
	%18 = load %type.TypeNode** %t
	call void @type_Final(%type.TypeNode* %18)
	%19 = load %type.TypeNode** %t
	%20 = getelementptr %type.TypeNode* %19, i32 0, i32 0
	%21 = load %type.TypeNode** %20
	%22 = bitcast %type.TypeNode* %21 to %type.TypeNode*
	store %type.TypeNode* %22, %type.TypeNode** %mt
	br label %L.10
L.12:
	%23 = call %symb.SymbNode* @type_Name()
	store %symb.SymbNode* %23, %symb.SymbNode** %s
	%24 = call i8 @lex_Next()
	store i8 %24, i8* %tok
	%25 = load %symb.SymbNode** %s
	%26 = icmp ne %symb.SymbNode* %25, null
	br i1 %26, label %L.14, label %L.15
L.14:
	%27 = load %symb.SymbNode** %s
	%28 = getelementptr %symb.SymbNode* %27, i32 0, i32 1
	%29 = load %type.TypeNode** %28
	store %type.TypeNode* %29, %type.TypeNode** %t
	%30 = load %type.TypeNode** %t
	store %type.TypeNode* %30, %type.TypeNode** %mt
	%31 = load %type.TypeNode** %t
	%32 = icmp ne %type.TypeNode* %31, null
	br i1 %32, label %L.16, label %L.17
L.16:
	%33 = load %type.TypeNode** %t
	%34 = getelementptr %type.TypeNode* %33, i32 0, i32 14
	%35 = load i8* %34
	%36 = icmp eq i8 %35, 5
	br label %L.17
L.17:
	%37 = phi i1 [ false, %L.14 ], [ %36, %L.16 ]
	br i1 %37, label %L.19, label %L.18
L.19:
	%38 = load %type.TypeNode** %t
	%39 = getelementptr %type.TypeNode* %38, i32 0, i32 0
	%40 = load %type.TypeNode** %39
	%41 = bitcast %type.TypeNode* %40 to %type.TypeNode*
	store %type.TypeNode* %41, %type.TypeNode** %mt
	br label %L.18
L.18:
	br label %L.13
L.15:
	call void @lex_Error(i8 26)
	br label %L.13
L.13:
	br label %L.10
L.9:
	call void @lex_ErrorT(i8 17, i8 41)
	br label %L.10
L.10:
	br label %L.6
L.8:
	call void @lex_ErrorT(i8 17, i8 3)
	br label %L.6
L.6:
	%42 = load %type.TypeNode** %t
	%43 = load %symb.SymbNode** %ms
	%44 = getelementptr %symb.SymbNode* %43, i32 0, i32 1
	store %type.TypeNode* %42, %type.TypeNode** %44
	br label %L.3
L.5:
	call void @lex_ErrorT(i8 17, i8 41)
	br label %L.3
L.3:
	%45 = call i8 @lex_Expect(i8 33)
	store i8 %45, i8* %tok
	br label %L.1
L.1:
	%46 = load i8* %tok
	%47 = icmp eq i8 %46, 41
	br i1 %47, label %L.21, label %L.22
L.21:
	%48 = load %type.TypeNode** %mt
	%49 = icmp ne %type.TypeNode* %48, null
	br i1 %49, label %L.24, label %L.25
L.24:
	%50 = load %type.TypeNode** %mt
	%51 = getelementptr %type.TypeNode* %50, i32 0, i32 5
	%52 = load %symb.SymbNode** %51
	%53 = bitcast %symb.SymbNode* %52 to %symb.SymbNode*
	%54 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%55 = call %symb.SymbNode* @symb_FindMethod(%symb.SymbNode* %53, [0 x i8]* %54)
	store %symb.SymbNode* %55, %symb.SymbNode** %s
	%56 = load %symb.SymbNode** %s
	%57 = icmp ne %symb.SymbNode* %56, null
	br i1 %57, label %L.27, label %L.28
L.27:
	%58 = load %symb.SymbNode** %s
	%59 = getelementptr %symb.SymbNode* %58, i32 0, i32 15
	%60 = load i8* %59
	%61 = icmp ne i8 %60, 0
	%62 = xor i1 %61, true
	br i1 %62, label %L.30, label %L.29
L.30:
	%63 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 20, [0 x i8]* %63)
	br label %L.29
L.29:
	br label %L.26
L.28:
	%64 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%65 = call %symb.SymbNode* @symb_New(i8 5, [0 x i8]* %64, i8 2)
	store %symb.SymbNode* %65, %symb.SymbNode** %s
	%66 = load %symb.SymbNode** %s
	%67 = getelementptr %symb.SymbNode* %66, i32 0, i32 16
	store i8 1, i8* %67
	%68 = load %type.TypeNode** %mt
	%69 = getelementptr %type.TypeNode* %68, i32 0, i32 5
	%70 = load %symb.SymbNode** %69
	%71 = bitcast %symb.SymbNode* %70 to %symb.SymbNode*
	%72 = load %symb.SymbNode** %s
	%73 = getelementptr %symb.SymbNode* %72, i32 0, i32 0
	store %symb.SymbNode* %71, %symb.SymbNode** %73
	%74 = load %symb.SymbNode** %s
	%75 = bitcast %symb.SymbNode* %74 to %symb.SymbNode*
	%76 = load %type.TypeNode** %mt
	%77 = getelementptr %type.TypeNode* %76, i32 0, i32 5
	store %symb.SymbNode* %75, %symb.SymbNode** %77
	br label %L.26
L.26:
	br label %L.23
L.25:
	%78 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%79 = call %symb.SymbNode* @symb_New(i8 5, [0 x i8]* %78, i8 0)
	store %symb.SymbNode* %79, %symb.SymbNode** %s
	br label %L.23
L.23:
	%80 = call i8 @lex_Next()
	store i8 %80, i8* %tok
	%81 = load %symb.SymbNode** %s
	%82 = getelementptr %symb.SymbNode* %81, i32 0, i32 3
	%83 = load %symb.SymbNode** %82
	%84 = bitcast %symb.SymbNode* %83 to %symb.SymbNode*
	store %symb.SymbNode* %84, %symb.SymbNode** %fs
	%85 = load %symb.SymbNode** %s
	%86 = getelementptr %symb.SymbNode* %85, i32 0, i32 4
	%87 = load %type.TypeListEntry** %86
	store %type.TypeListEntry* %87, %type.TypeListEntry** %ft
	%88 = load %symb.SymbNode** %s
	%89 = getelementptr %symb.SymbNode* %88, i32 0, i32 3
	store %symb.SymbNode* null, %symb.SymbNode** %89
	%90 = load %symb.SymbNode** %s
	%91 = load %symb.SymbNode** %ms
	call void @type_DefProc(%symb.SymbNode* %90, %symb.SymbNode* %91)
	%92 = load %symb.SymbNode** %s
	%93 = getelementptr %symb.SymbNode* %92, i32 0, i32 15
	%94 = load i8* %93
	%95 = icmp ne i8 %94, 0
	br i1 %95, label %L.32, label %L.31
L.32:
	%96 = load %symb.SymbNode** %fs
	%97 = load %symb.SymbNode** %s
	%98 = getelementptr %symb.SymbNode* %97, i32 0, i32 3
	%99 = load %symb.SymbNode** %98
	%100 = bitcast %symb.SymbNode* %99 to %symb.SymbNode*
	%101 = call i8 @type_SameSymbList(%symb.SymbNode* %96, %symb.SymbNode* %100)
	%102 = icmp ne i8 %101, 0
	%103 = xor i1 %102, true
	br i1 %103, label %L.34, label %L.33
L.34:
	%104 = load %symb.SymbNode** %s
	%105 = getelementptr %symb.SymbNode* %104, i32 0, i32 22
	%106 = getelementptr [0 x i8]* %105
	%107 = bitcast [0 x i8]* %106 to [0 x i8]*
	call void @lex_ErrorI(i8 46, [0 x i8]* %107)
	br label %L.33
L.33:
	%108 = load %type.TypeListEntry** %ft
	%109 = load %symb.SymbNode** %s
	%110 = getelementptr %symb.SymbNode* %109, i32 0, i32 4
	%111 = load %type.TypeListEntry** %110
	%112 = call i8 @type_SameTypeList(%type.TypeListEntry* %108, %type.TypeListEntry* %111)
	%113 = icmp ne i8 %112, 0
	%114 = xor i1 %113, true
	br i1 %114, label %L.36, label %L.35
L.36:
	%115 = load %symb.SymbNode** %s
	%116 = getelementptr %symb.SymbNode* %115, i32 0, i32 22
	%117 = getelementptr [0 x i8]* %116
	%118 = bitcast [0 x i8]* %117 to [0 x i8]*
	call void @lex_ErrorI(i8 47, [0 x i8]* %118)
	br label %L.35
L.35:
	br label %L.31
L.31:
	%119 = load i8* @lex_Token
	store i8 %119, i8* %tok
	%120 = load i8* %tok
	%121 = icmp eq i8 %120, 3
	br i1 %121, label %L.38, label %L.37
L.38:
	%122 = load %symb.SymbNode** %s
	call void @type_ProcAttributes(%symb.SymbNode* %122)
	%123 = load i8* @lex_Token
	store i8 %123, i8* %tok
	br label %L.37
L.37:
	%124 = load i8* %tok
	%125 = icmp ne i8 %124, 4
	br i1 %125, label %L.40, label %L.41
L.40:
	%126 = load %symb.SymbNode** %s
	%127 = getelementptr %symb.SymbNode* %126, i32 0, i32 15
	store i8 0, i8* %127
	%128 = load %symb.SymbNode** %s
	store %symb.SymbNode* %128, %symb.SymbNode** @symb_curproc
	%129 = load %symb.SymbNode** %s
	%130 = getelementptr %symb.SymbNode* %129, i32 0, i32 3
	%131 = load %symb.SymbNode** %130
	%132 = bitcast %symb.SymbNode* %131 to %symb.SymbNode*
	%133 = call %symb.SymbNode* @symb_Push(%symb.SymbNode* %132, %symb.SymbNode* null)
	store %symb.SymbNode* %133, %symb.SymbNode** %es
	store i8 0, i8* @stmt_LoopLevel
	%134 = call %ast.AstNode* @stmt_Statement()
	store %ast.AstNode* %134, %ast.AstNode** %tree
	%135 = getelementptr %A.2* @debug, i32 0, i32 0
	%136 = getelementptr %A.1* %135, i32 0, i32 3
	%137 = load i8* %136
	%138 = icmp ne i8 %137, 0
	br i1 %138, label %L.43, label %L.42
L.43:
	call void @symb_Dump(i8 1)
	br label %L.42
L.42:
	call void @symb_Pop()
	%139 = load %symb.SymbNode** %es
	%140 = icmp ne %symb.SymbNode* %139, null
	br i1 %140, label %L.45, label %L.44
L.45:
	%141 = load %symb.SymbNode** %es
	%142 = getelementptr %symb.SymbNode* %141, i32 0, i32 0
	store %symb.SymbNode* null, %symb.SymbNode** %142
	br label %L.44
L.44:
	store %symb.SymbNode* null, %symb.SymbNode** @symb_curproc
	%143 = load %symb.SymbNode** %s
	%144 = getelementptr %symb.SymbNode* %143, i32 0, i32 1
	%145 = load %type.TypeNode** %144
	store %type.TypeNode* %145, %type.TypeNode** %t
	%146 = load %type.TypeNode** %t
	%147 = load %ast.AstNode** %tree
	%148 = call %ast.AstNode* @ast_New1(i8 91, %type.TypeNode* %146, %ast.AstNode* %147)
	store %ast.AstNode* %148, %ast.AstNode** %tree
	%149 = load %symb.SymbNode** %s
	%150 = load %ast.AstNode** %tree
	%151 = getelementptr %ast.AstNode* %150, i32 0, i32 9
	store %symb.SymbNode* %149, %symb.SymbNode** %151
	%152 = load %type.TypeNode** %t
	%153 = icmp ne %type.TypeNode* %152, null
	br i1 %153, label %L.46, label %L.47
L.46:
	%154 = load %type.TypeNode** %t
	%155 = getelementptr %type.TypeNode* %154, i32 0, i32 14
	%156 = load i8* %155
	%157 = icmp eq i8 %156, 5
	br label %L.47
L.47:
	%158 = phi i1 [ false, %L.44 ], [ %157, %L.46 ]
	br i1 %158, label %L.49, label %L.48
L.49:
	%159 = load %type.TypeNode** %t
	%160 = getelementptr %type.TypeNode* %159, i32 0, i32 0
	%161 = load %type.TypeNode** %160
	%162 = bitcast %type.TypeNode* %161 to %type.TypeNode*
	%163 = load %ast.AstNode** %tree
	%164 = getelementptr %ast.AstNode* %163, i32 0, i32 8
	store %type.TypeNode* %162, %type.TypeNode** %164
	%165 = load %target.ModelT** @target_Target
	%166 = getelementptr %target.ModelT* %165, i32 0, i32 6
	%167 = getelementptr %target.SizeAlign* %166, i32 0, i32 0
	%168 = load i8* %167
	%169 = zext i8 %168 to i32
	%170 = load %ast.AstNode** %tree
	%171 = getelementptr %ast.AstNode* %170, i32 0, i32 7
	store i32 %169, i32* %171
	br label %L.48
L.48:
	br label %L.39
L.41:
	%172 = call i8 @lex_Next()
	store i8 %172, i8* %tok
	%173 = load %symb.SymbNode** %s
	%174 = getelementptr %symb.SymbNode* %173, i32 0, i32 14
	%175 = load i8* %174
	%176 = zext i8 %175 to i32
	switch i32 %176, label %L.50 [
		i32 5, label %L.52
		i32 6, label %L.52
	]
L.52:
	%177 = load %symb.SymbNode** %s
	%178 = getelementptr %symb.SymbNode* %177, i32 0, i32 15
	store i8 0, i8* %178
	br label %L.51
L.50:
	%179 = load %symb.SymbNode** %s
	%180 = getelementptr %symb.SymbNode* %179, i32 0, i32 15
	store i8 1, i8* %180
	br label %L.51
L.51:
	br label %L.39
L.39:
	br label %L.20
L.22:
	call void @lex_ErrorT(i8 17, i8 41)
	br label %L.20
L.20:
	%181 = load %ast.AstNode** %tree
	store %ast.AstNode* %181, %ast.AstNode** %rv.0
	br label %return
return:
	%182 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %182
}
define internal %ast.AstNode* @stmt_ImportSub([0 x i8]* %filename$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%filename = alloca [0 x i8]*
	store [0 x i8]* %filename$, [0 x i8]** %filename
	%tree = alloca %ast.AstNode*
	%tok = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load [0 x i8]** %filename
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = call i8 @lex_FileCheck([0 x i8]* %1)
	%3 = icmp ne i8 %2, 0
	br i1 %3, label %L.2, label %L.1
L.2:
	%4 = load i8* @lex_Token
	store i8 %4, i8* %tok
	%5 = load [0 x i8]** %filename
	%6 = bitcast [0 x i8]* %5 to [0 x i8]*
	%7 = call %ast.AstNode* @stmt_Program([0 x i8]* %6)
	store %ast.AstNode* %7, %ast.AstNode** %tree
	call void @lex_FileClose()
	%8 = load i8* %tok
	store i8 %8, i8* @lex_Token
	br label %L.1
L.1:
	%9 = load %ast.AstNode** %tree
	store %ast.AstNode* %9, %ast.AstNode** %rv.0
	br label %return
return:
	%10 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %10
}
define internal %ast.AstNode* @stmt_Import() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%tok = alloca i8
	%s = alloca %symb.SymbNode*
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	store %ast.AstNode* null, %ast.AstNode** %tree
	%1 = load i8* %tok
	%2 = zext i8 %1 to i32
	switch i32 %2, label %L.1 [
		i32 41, label %L.3
		i32 32, label %L.4
	]
L.3:
	%3 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%4 = call %ast.AstNode* @stmt_ImportSub([0 x i8]* %3)
	store %ast.AstNode* %4, %ast.AstNode** %tree
	%5 = call i8 @lex_Next()
	store i8 %5, i8* %tok
	br label %L.2
L.4:
	%6 = call i8 @lex_Next()
	store i8 %6, i8* %tok
	%7 = call %symb.SymbNode* @expr_ConstString()
	store %symb.SymbNode* %7, %symb.SymbNode** %s
	%8 = load %symb.SymbNode** %s
	%9 = icmp ne %symb.SymbNode* %8, null
	br i1 %9, label %L.6, label %L.5
L.6:
	%10 = load %symb.SymbNode** %s
	%11 = getelementptr %symb.SymbNode* %10, i32 0, i32 22
	%12 = getelementptr [0 x i8]* %11
	%13 = bitcast [0 x i8]* %12 to [0 x i8]*
	%14 = call %ast.AstNode* @stmt_ImportSub([0 x i8]* %13)
	store %ast.AstNode* %14, %ast.AstNode** %tree
	br label %L.5
L.5:
	%15 = call i8 @lex_Expect(i8 33)
	store i8 %15, i8* %tok
	br label %L.2
L.1:
	br label %L.2
L.2:
	%16 = call i8 @lex_Expect(i8 4)
	store i8 %16, i8* %tok
	%17 = load %ast.AstNode** %tree
	store %ast.AstNode* %17, %ast.AstNode** %rv.0
	br label %return
return:
	%18 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %18
}
@stmt_packlist = internal constant [10 x i8] [ i8 42, i8 43, i8 44, i8 48, i8 46, i8 49, i8 45, i8 53, i8 47, i8 0 ], align 1
define internal %ast.AstNode* @stmt_PkgStmt() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%tok = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = bitcast [10 x i8]* @stmt_packlist to [0 x i8]*
	%1 = call i8 @lex_Keyword([0 x i8]* %0)
	store i8 %1, i8* %tok
	%2 = load i8* %tok
	%3 = zext i8 %2 to i32
	switch i32 %3, label %L.1 [
		i32 46, label %L.3
		i32 42, label %L.4
		i32 43, label %L.5
		i32 44, label %L.6
		i32 48, label %L.7
		i32 49, label %L.8
		i32 53, label %L.9
		i32 47, label %L.10
	]
L.3:
	%4 = call i8 @lex_Next()
	store i8 %4, i8* %tok
	%5 = call %ast.AstNode* @stmt_Alias()
	store %ast.AstNode* %5, %ast.AstNode** %tree
	br label %L.2
L.4:
	%6 = call i8 @lex_Next()
	store i8 %6, i8* %tok
	%7 = call %ast.AstNode* @stmt_TypeDecl()
	store %ast.AstNode* %7, %ast.AstNode** %tree
	br label %L.2
L.5:
	%8 = call i8 @lex_Next()
	store i8 %8, i8* %tok
	%9 = call %ast.AstNode* @stmt_VarDecl()
	store %ast.AstNode* %9, %ast.AstNode** %tree
	br label %L.2
L.6:
	%10 = call i8 @lex_Next()
	store i8 %10, i8* %tok
	%11 = call %ast.AstNode* @stmt_ConstDecl()
	store %ast.AstNode* %11, %ast.AstNode** %tree
	br label %L.2
L.7:
	%12 = call i8 @lex_Next()
	store i8 %12, i8* %tok
	%13 = call %ast.AstNode* @stmt_Procedure()
	store %ast.AstNode* %13, %ast.AstNode** %tree
	br label %L.2
L.8:
	%14 = call i8 @lex_Next()
	store i8 %14, i8* %tok
	%15 = call %ast.AstNode* @stmt_Package()
	store %ast.AstNode* %15, %ast.AstNode** %tree
	br label %L.2
L.9:
	%16 = call i8 @lex_Next()
	store i8 %16, i8* %tok
	%17 = call %ast.AstNode* @stmt_CCIfStmt(i8 1)
	store %ast.AstNode* %17, %ast.AstNode** %tree
	br label %L.2
L.10:
	%18 = call i8 @lex_Next()
	store i8 %18, i8* %tok
	%19 = call %ast.AstNode* @stmt_ErrorStmt()
	store %ast.AstNode* %19, %ast.AstNode** %tree
	br label %L.2
L.1:
	%20 = load i8* %tok
	%21 = icmp eq i8 %20, 41
	br i1 %21, label %L.12, label %L.13
L.12:
	call void @lex_Error(i8 58)
	%22 = bitcast [3 x i8]* @stmt_skiplist to [0 x i8]*
	%23 = call i8 @lex_Skip([0 x i8]* %22)
	store i8 %23, i8* %tok
	br label %L.11
L.13:
	%24 = load i8* %tok
	%25 = icmp ne i8 %24, 4
	br i1 %25, label %L.15, label %L.14
L.15:
	%26 = load i8* %tok
	call void @lex_ErrorT(i8 35, i8 %26)
	br label %L.14
L.14:
	%27 = call i8 @lex_Next()
	store i8 %27, i8* %tok
	br label %L.11
L.11:
	br label %L.2
L.2:
	%28 = load %ast.AstNode** %tree
	store %ast.AstNode* %28, %ast.AstNode** %rv.0
	br label %return
return:
	%29 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %29
}
define internal %ast.AstNode* @stmt_Package() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%stree = alloca %ast.AstNode*
	%tok = alloca i8
	%s = alloca %symb.SymbNode*
	%pkgsave = alloca %symb.SymbNode*
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = load i8* @lex_Token
	store i8 %0, i8* %tok
	%1 = load i8* %tok
	%2 = icmp eq i8 %1, 41
	br i1 %2, label %L.2, label %L.1
L.2:
	%3 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%4 = call %symb.SymbNode* @symb_FindThisLevel([0 x i8]* %3)
	store %symb.SymbNode* %4, %symb.SymbNode** %s
	%5 = load %symb.SymbNode** %s
	%6 = icmp eq %symb.SymbNode* %5, null
	br i1 %6, label %L.4, label %L.5
L.4:
	%7 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	%8 = call %symb.SymbNode* @symb_New(i8 6, [0 x i8]* %7, i8 0)
	store %symb.SymbNode* %8, %symb.SymbNode** %s
	br label %L.3
L.5:
	%9 = load %symb.SymbNode** %s
	%10 = getelementptr %symb.SymbNode* %9, i32 0, i32 13
	%11 = load i8* %10
	%12 = icmp ne i8 %11, 6
	br i1 %12, label %L.7, label %L.6
L.7:
	%13 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 20, [0 x i8]* %13)
	br label %L.6
L.6:
	br label %L.3
L.3:
	%14 = call i8 @lex_Next()
	store i8 %14, i8* %tok
	%15 = load i8* %tok
	%16 = icmp eq i8 %15, 36
	br i1 %16, label %L.9, label %L.8
L.9:
	%17 = call i8 @lex_Next()
	store i8 %17, i8* %tok
	%18 = load %symb.SymbNode** @symb_curpack
	store %symb.SymbNode* %18, %symb.SymbNode** %pkgsave
	%19 = load %symb.SymbNode** %s
	store %symb.SymbNode* %19, %symb.SymbNode** @symb_curpack
	%20 = call %ast.AstNode* @ast_New(i8 84, %type.TypeNode* null)
	store %ast.AstNode* %20, %ast.AstNode** %tree
	%21 = load %symb.SymbNode** %s
	%22 = getelementptr %symb.SymbNode* %21, i32 0, i32 5
	%23 = load %symb.SymbNode** %22
	%24 = bitcast %symb.SymbNode* %23 to %symb.SymbNode*
	%25 = load %symb.SymbNode** %s
	%26 = call %symb.SymbNode* @symb_Push(%symb.SymbNode* %24, %symb.SymbNode* %25)
	br label %L.10
L.10:
	%27 = load i8* %tok
	%28 = icmp ne i8 %27, 37
	br i1 %28, label %L.13, label %L.14
L.13:
	%29 = load i8* %tok
	%30 = icmp ne i8 %29, 1
	br label %L.14
L.14:
	%31 = phi i1 [ false, %L.10 ], [ %30, %L.13 ]
	%32 = xor i1 %31, true
	br i1 %32, label %L.11, label %L.12
L.12:
	%33 = call %ast.AstNode* @stmt_PkgStmt()
	store %ast.AstNode* %33, %ast.AstNode** %stree
	%34 = load %ast.AstNode** %stree
	%35 = icmp ne %ast.AstNode* %34, null
	br i1 %35, label %L.16, label %L.15
L.16:
	%36 = load %ast.AstNode** %tree
	%37 = load %ast.AstNode** %stree
	%38 = call %ast.AstNode* @ast_Child(%ast.AstNode* %36, %ast.AstNode* %37)
	store %ast.AstNode* %38, %ast.AstNode** %tree
	br label %L.15
L.15:
	%39 = load i8* @lex_Token
	store i8 %39, i8* %tok
	br label %L.10
L.11:
	%40 = load %ast.AstNode** %tree
	%41 = call %ast.AstNode* @ast_New1(i8 4, %type.TypeNode* null, %ast.AstNode* %40)
	store %ast.AstNode* %41, %ast.AstNode** %tree
	%42 = load %symb.SymbNode** %s
	%43 = load %ast.AstNode** %tree
	%44 = getelementptr %ast.AstNode* %43, i32 0, i32 9
	store %symb.SymbNode* %42, %symb.SymbNode** %44
	br label %L.8
L.8:
	%45 = call i8 @lex_Expect(i8 37)
	store i8 %45, i8* %tok
	%46 = call %symb.SymbNode* @symb_Save()
	%47 = bitcast %symb.SymbNode* %46 to %symb.SymbNode*
	%48 = load %symb.SymbNode** %s
	%49 = getelementptr %symb.SymbNode* %48, i32 0, i32 5
	store %symb.SymbNode* %47, %symb.SymbNode** %49
	%50 = getelementptr %A.2* @debug, i32 0, i32 0
	%51 = getelementptr %A.1* %50, i32 0, i32 2
	%52 = load i8* %51
	%53 = icmp ne i8 %52, 0
	br i1 %53, label %L.18, label %L.17
L.18:
	call void @symb_Dump(i8 1)
	br label %L.17
L.17:
	call void @symb_Pop()
	%54 = load %symb.SymbNode** %pkgsave
	store %symb.SymbNode* %54, %symb.SymbNode** @symb_curpack
	br label %L.1
L.1:
	%55 = load %ast.AstNode** %tree
	store %ast.AstNode* %55, %ast.AstNode** %rv.0
	br label %return
return:
	%56 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %56
}
@stmt_proglist = internal constant [10 x i8] [ i8 45, i8 46, i8 49, i8 42, i8 43, i8 44, i8 48, i8 53, i8 47, i8 0 ], align 1
define internal %ast.AstNode* @stmt_ProgStmt() nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%tok = alloca i8
	store %ast.AstNode* null, %ast.AstNode** %tree
	%0 = bitcast [10 x i8]* @stmt_proglist to [0 x i8]*
	%1 = call i8 @lex_Keyword([0 x i8]* %0)
	store i8 %1, i8* %tok
	%2 = load i8* %tok
	%3 = zext i8 %2 to i32
	switch i32 %3, label %L.1 [
		i32 45, label %L.3
		i32 46, label %L.4
		i32 49, label %L.5
		i32 42, label %L.6
		i32 43, label %L.7
		i32 44, label %L.8
		i32 48, label %L.9
		i32 53, label %L.10
		i32 47, label %L.11
	]
L.3:
	%4 = call i8 @lex_Next()
	store i8 %4, i8* %tok
	%5 = call %ast.AstNode* @stmt_Import()
	store %ast.AstNode* %5, %ast.AstNode** %tree
	br label %L.2
L.4:
	%6 = call i8 @lex_Next()
	store i8 %6, i8* %tok
	%7 = call %ast.AstNode* @stmt_Alias()
	store %ast.AstNode* %7, %ast.AstNode** %tree
	br label %L.2
L.5:
	%8 = call i8 @lex_Next()
	store i8 %8, i8* %tok
	%9 = call %ast.AstNode* @stmt_Package()
	store %ast.AstNode* %9, %ast.AstNode** %tree
	br label %L.2
L.6:
	%10 = call i8 @lex_Next()
	store i8 %10, i8* %tok
	%11 = call %ast.AstNode* @stmt_TypeDecl()
	store %ast.AstNode* %11, %ast.AstNode** %tree
	br label %L.2
L.7:
	%12 = call i8 @lex_Next()
	store i8 %12, i8* %tok
	%13 = call %ast.AstNode* @stmt_VarDecl()
	store %ast.AstNode* %13, %ast.AstNode** %tree
	br label %L.2
L.8:
	%14 = call i8 @lex_Next()
	store i8 %14, i8* %tok
	%15 = call %ast.AstNode* @stmt_ConstDecl()
	store %ast.AstNode* %15, %ast.AstNode** %tree
	br label %L.2
L.9:
	%16 = call i8 @lex_Next()
	store i8 %16, i8* %tok
	%17 = call %ast.AstNode* @stmt_Procedure()
	store %ast.AstNode* %17, %ast.AstNode** %tree
	br label %L.2
L.10:
	%18 = call i8 @lex_Next()
	store i8 %18, i8* %tok
	%19 = call %ast.AstNode* @stmt_CCIfStmt(i8 0)
	store %ast.AstNode* %19, %ast.AstNode** %tree
	br label %L.2
L.11:
	%20 = call i8 @lex_Next()
	store i8 %20, i8* %tok
	%21 = call %ast.AstNode* @stmt_ErrorStmt()
	store %ast.AstNode* %21, %ast.AstNode** %tree
	br label %L.2
L.1:
	%22 = load i8* %tok
	%23 = icmp eq i8 %22, 4
	br i1 %23, label %L.13, label %L.14
L.13:
	%24 = call i8 @lex_Next()
	store i8 %24, i8* %tok
	br label %L.12
L.14:
	%25 = load i8* %tok
	%26 = icmp eq i8 %25, 41
	br i1 %26, label %L.16, label %L.17
L.16:
	%27 = bitcast [256 x i8]* @lex_Ident to [0 x i8]*
	call void @lex_ErrorI(i8 34, [0 x i8]* %27)
	br label %L.15
L.17:
	%28 = load i8* %tok
	call void @lex_ErrorT(i8 35, i8 %28)
	br label %L.15
L.15:
	%29 = bitcast [3 x i8]* @stmt_skiplist to [0 x i8]*
	%30 = call i8 @lex_Skip([0 x i8]* %29)
	store i8 %30, i8* %tok
	br label %L.12
L.12:
	br label %L.2
L.2:
	%31 = load %ast.AstNode** %tree
	store %ast.AstNode* %31, %ast.AstNode** %rv.0
	br label %return
return:
	%32 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %32
}
define internal %ast.AstNode* @stmt_Program([0 x i8]* %file$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%file = alloca [0 x i8]*
	store [0 x i8]* %file$, [0 x i8]** %file
	%tree = alloca %ast.AstNode*
	%stree = alloca %ast.AstNode*
	%tok = alloca i8
	%s = alloca %symb.SymbNode*
	%0 = load %lex.FileContext** @lex_f
	%1 = getelementptr %lex.FileContext* %0, i32 0, i32 1
	%2 = load %lex.SearchPathEntry** %1
	%3 = getelementptr %lex.SearchPathEntry* %2, i32 0, i32 1
	%4 = getelementptr [0 x i8]* %3
	%5 = bitcast [0 x i8]* %4 to [0 x i8]*
	%6 = load %lex.FileContext** @lex_f
	%7 = getelementptr %lex.FileContext* %6, i32 0, i32 2
	%8 = load %lex.FileListEntry** %7
	%9 = getelementptr %lex.FileListEntry* %8, i32 0, i32 1
	%10 = getelementptr [0 x i8]* %9
	%11 = bitcast [0 x i8]* %10 to [0 x i8]*
	%12 = call %symb.SymbNode* @symb_NewFile([0 x i8]* %5, [0 x i8]* %11)
	store %symb.SymbNode* %12, %symb.SymbNode** %s
	%13 = load %symb.SymbNode** @stmt_CurFile
	%14 = bitcast %symb.SymbNode* %13 to %symb.SymbNode*
	%15 = load %symb.SymbNode** %s
	%16 = getelementptr %symb.SymbNode* %15, i32 0, i32 2
	store %symb.SymbNode* %14, %symb.SymbNode** %16
	%17 = load %symb.SymbNode** %s
	store %symb.SymbNode* %17, %symb.SymbNode** @stmt_CurFile
	store %symb.SymbNode* null, %symb.SymbNode** @symb_curpack
	%18 = call %ast.AstNode* @ast_New(i8 84, %type.TypeNode* null)
	store %ast.AstNode* %18, %ast.AstNode** %tree
	%19 = call i8 @lex_Next()
	store i8 %19, i8* %tok
	br label %L.1
L.1:
	%20 = load i8* %tok
	%21 = icmp ne i8 %20, 1
	%22 = xor i1 %21, true
	br i1 %22, label %L.2, label %L.3
L.3:
	%23 = call %ast.AstNode* @stmt_ProgStmt()
	store %ast.AstNode* %23, %ast.AstNode** %stree
	%24 = load %ast.AstNode** %stree
	%25 = icmp ne %ast.AstNode* %24, null
	br i1 %25, label %L.5, label %L.4
L.5:
	%26 = load %ast.AstNode** %tree
	%27 = load %ast.AstNode** %stree
	%28 = call %ast.AstNode* @ast_Child(%ast.AstNode* %26, %ast.AstNode* %27)
	store %ast.AstNode* %28, %ast.AstNode** %tree
	br label %L.4
L.4:
	%29 = load i8* @lex_Token
	store i8 %29, i8* %tok
	br label %L.1
L.2:
	%30 = load %ast.AstNode** %tree
	%31 = call %ast.AstNode* @ast_New1(i8 3, %type.TypeNode* null, %ast.AstNode* %30)
	store %ast.AstNode* %31, %ast.AstNode** %tree
	%32 = load %symb.SymbNode** %s
	%33 = load %ast.AstNode** %tree
	%34 = getelementptr %ast.AstNode* %33, i32 0, i32 9
	store %symb.SymbNode* %32, %symb.SymbNode** %34
	%35 = load %ast.AstNode** %tree
	store %ast.AstNode* %35, %ast.AstNode** %rv.0
	br label %return
return:
	%36 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %36
}
@bout_MinBufSize = internal constant i32 32, align 4
%bout.BufIO = type {[0 x i8]*, i16, i16, i32}
define internal %bout.BufIO* @bout_buffer(i32 %fd$, i32 %sz$) nounwind {
L.0:
	%rv.0 = alloca %bout.BufIO*
	%fd = alloca i32
	%sz = alloca i32
	store i32 %fd$, i32* %fd
	store i32 %sz$, i32* %sz
	%bo = alloca %bout.BufIO*
	%0 = load i32* %sz
	%1 = icmp ugt i32 %0, 32
	%2 = select i1 %1, i32 %0, i32 32
	store i32 %2, i32* %sz
	%3 = call [0 x i8]* @malloc(i32 12)
	%4 = bitcast [0 x i8]* %3 to %bout.BufIO*
	store %bout.BufIO* %4, %bout.BufIO** %bo
	%5 = load %bout.BufIO** %bo
	%6 = icmp ne %bout.BufIO* %5, null
	br i1 %6, label %L.2, label %L.1
L.2:
	%7 = load i32* %sz
	%8 = call [0 x i8]* @malloc(i32 %7)
	%9 = bitcast [0 x i8]* %8 to [0 x i8]*
	%10 = load %bout.BufIO** %bo
	%11 = getelementptr %bout.BufIO* %10, i32 0, i32 0
	store [0 x i8]* %9, [0 x i8]** %11
	%12 = load %bout.BufIO** %bo
	%13 = getelementptr %bout.BufIO* %12, i32 0, i32 0
	%14 = load [0 x i8]** %13
	%15 = icmp ne [0 x i8]* %14, null
	br i1 %15, label %L.4, label %L.3
L.4:
	%16 = load i32* %sz
	%17 = trunc i32 %16 to i16
	%18 = load %bout.BufIO** %bo
	%19 = getelementptr %bout.BufIO* %18, i32 0, i32 1
	store i16 %17, i16* %19
	%20 = load i32* %sz
	%21 = trunc i32 %20 to i16
	%22 = load %bout.BufIO** %bo
	%23 = getelementptr %bout.BufIO* %22, i32 0, i32 2
	store i16 %21, i16* %23
	%24 = load i32* %fd
	%25 = load %bout.BufIO** %bo
	%26 = getelementptr %bout.BufIO* %25, i32 0, i32 3
	store i32 %24, i32* %26
	%27 = load %bout.BufIO** %bo
	%28 = bitcast %bout.BufIO* %27 to %bout.BufIO*
	store %bout.BufIO* %28, %bout.BufIO** %rv.0
	br label %return
L.3:
	br label %L.1
L.1:
	store %bout.BufIO* null, %bout.BufIO** %rv.0
	br label %return
return:
	%29 = load %bout.BufIO** %rv.0
	ret %bout.BufIO* %29
}
define internal void @bout_BufIO_flush(%bout.BufIO* %bo$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	%0 = load %bout.BufIO** %bo
	%1 = getelementptr %bout.BufIO* %0, i32 0, i32 3
	%2 = load i32* %1
	%3 = load %bout.BufIO** %bo
	%4 = getelementptr %bout.BufIO* %3, i32 0, i32 0
	%5 = load [0 x i8]** %4
	%6 = bitcast [0 x i8]* %5 to [0 x i8]*
	%7 = load %bout.BufIO** %bo
	%8 = getelementptr %bout.BufIO* %7, i32 0, i32 1
	%9 = load i16* %8
	%10 = zext i16 %9 to i32
	%11 = load %bout.BufIO** %bo
	%12 = getelementptr %bout.BufIO* %11, i32 0, i32 2
	%13 = load i16* %12
	%14 = zext i16 %13 to i32
	%15 = sub i32 %10, %14
	%16 = call i32 @write(i32 %2, [0 x i8]* %6, i32 %15)
	%17 = load %bout.BufIO** %bo
	%18 = getelementptr %bout.BufIO* %17, i32 0, i32 1
	%19 = load i16* %18
	%20 = load %bout.BufIO** %bo
	%21 = getelementptr %bout.BufIO* %20, i32 0, i32 2
	store i16 %19, i16* %21
	br label %return
return:
	ret void
}
define internal [0 x i8]* @bout_BufIO_need(%bout.BufIO* %bo$, i32 %n$) nounwind {
L.0:
	%rv.0 = alloca [0 x i8]*
	%bo = alloca %bout.BufIO*
	%n = alloca i32
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i32 %n$, i32* %n
	%k = alloca i32
	%0 = load i32* %n
	%1 = load %bout.BufIO** %bo
	%2 = getelementptr %bout.BufIO* %1, i32 0, i32 2
	%3 = load i16* %2
	%4 = zext i16 %3 to i32
	%5 = icmp ugt i32 %0, %4
	br i1 %5, label %L.2, label %L.1
L.2:
	%6 = load %bout.BufIO** %bo
	%7 = bitcast %bout.BufIO* %6 to %bout.BufIO*
	call void @bout_BufIO_flush(%bout.BufIO* %7)
	br label %L.1
L.1:
	%8 = load i32* %n
	%9 = load %bout.BufIO** %bo
	%10 = getelementptr %bout.BufIO* %9, i32 0, i32 1
	%11 = load i16* %10
	%12 = zext i16 %11 to i32
	%13 = icmp ugt i32 %8, %12
	br i1 %13, label %L.4, label %L.3
L.4:
	store [0 x i8]* null, [0 x i8]** %rv.0
	br label %return
L.3:
	%14 = load %bout.BufIO** %bo
	%15 = getelementptr %bout.BufIO* %14, i32 0, i32 2
	%16 = load i16* %15
	%17 = zext i16 %16 to i32
	store i32 %17, i32* %k
	%18 = load i32* %k
	%19 = load i32* %n
	%20 = sub i32 %18, %19
	%21 = trunc i32 %20 to i16
	%22 = load %bout.BufIO** %bo
	%23 = getelementptr %bout.BufIO* %22, i32 0, i32 2
	store i16 %21, i16* %23
	%24 = load %bout.BufIO** %bo
	%25 = getelementptr %bout.BufIO* %24, i32 0, i32 0
	%26 = load [0 x i8]** %25
	%27 = load %bout.BufIO** %bo
	%28 = getelementptr %bout.BufIO* %27, i32 0, i32 1
	%29 = load i16* %28
	%30 = zext i16 %29 to i32
	%31 = load i32* %k
	%32 = sub i32 %30, %31
	%33 = getelementptr [0 x i8]* %26, i32 0, i32 %32
	%34 = bitcast i8* %33 to [0 x i8]*
	%35 = getelementptr [0 x i8]* %34
	%36 = bitcast [0 x i8]* %35 to [0 x i8]*
	store [0 x i8]* %36, [0 x i8]** %rv.0
	br label %return
return:
	%37 = load [0 x i8]** %rv.0
	ret [0 x i8]* %37
}
define internal void @bout_BufIO_nl(%bout.BufIO* %bo$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	%bp = alloca [0 x i8]*
	%0 = load %bout.BufIO** %bo
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = call [0 x i8]* @bout_BufIO_need(%bout.BufIO* %1, i32 1)
	%3 = bitcast [0 x i8]* %2 to [0 x i8]*
	store [0 x i8]* %3, [0 x i8]** %bp
	%4 = load [0 x i8]** %bp
	%5 = icmp ne [0 x i8]* %4, null
	br i1 %5, label %L.2, label %L.1
L.2:
	%6 = load [0 x i8]** %bp
	%7 = getelementptr [0 x i8]* %6, i32 0, i32 0
	store i8 10, i8* %7
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
define internal void @bout_BufIO_chr(%bout.BufIO* %bo$, i8 zeroext %c$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%c = alloca i8
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i8 %c$, i8* %c
	%bp = alloca [0 x i8]*
	%0 = load %bout.BufIO** %bo
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = call [0 x i8]* @bout_BufIO_need(%bout.BufIO* %1, i32 1)
	%3 = bitcast [0 x i8]* %2 to [0 x i8]*
	store [0 x i8]* %3, [0 x i8]** %bp
	%4 = load [0 x i8]** %bp
	%5 = icmp ne [0 x i8]* %4, null
	br i1 %5, label %L.2, label %L.1
L.2:
	%6 = load i8* %c
	%7 = load [0 x i8]** %bp
	%8 = getelementptr [0 x i8]* %7, i32 0, i32 0
	store i8 %6, i8* %8
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
define internal void @bout_BufIO_str(%bout.BufIO* %bo$, [0 x i8]* %s$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%s = alloca [0 x i8]*
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store [0 x i8]* %s$, [0 x i8]** %s
	%n = alloca i32
	%bp = alloca [0 x i8]*
	%0 = load [0 x i8]** %s
	%1 = bitcast [0 x i8]* %0 to [0 x i8]*
	%2 = call i32 @zstr_len([0 x i8]* %1, i32 65535)
	store i32 %2, i32* %n
	%3 = load %bout.BufIO** %bo
	%4 = bitcast %bout.BufIO* %3 to %bout.BufIO*
	%5 = load i32* %n
	%6 = call [0 x i8]* @bout_BufIO_need(%bout.BufIO* %4, i32 %5)
	%7 = bitcast [0 x i8]* %6 to [0 x i8]*
	store [0 x i8]* %7, [0 x i8]** %bp
	%8 = load [0 x i8]** %bp
	%9 = icmp eq [0 x i8]* %8, null
	br i1 %9, label %L.2, label %L.3
L.2:
	%10 = load %bout.BufIO** %bo
	%11 = getelementptr %bout.BufIO* %10, i32 0, i32 3
	%12 = load i32* %11
	%13 = load [0 x i8]** %s
	%14 = bitcast [0 x i8]* %13 to [0 x i8]*
	%15 = load i32* %n
	%16 = call i32 @write(i32 %12, [0 x i8]* %14, i32 %15)
	br label %L.1
L.3:
	%17 = load [0 x i8]** %bp
	%18 = getelementptr [0 x i8]* %17, i32 0, i32 0
	%19 = bitcast i8* %18 to [0 x i8]*
	%20 = bitcast [0 x i8]* %19 to i8*
	%21 = load [0 x i8]** %s
	%22 = getelementptr [0 x i8]* %21, i32 0, i32 0
	%23 = bitcast i8* %22 to [0 x i8]*
	%24 = bitcast [0 x i8]* %23 to i8*
	%25 = load i32* %n
	%26 = load i32* %n
	%27 = icmp ult i32 %25, %26
	%28 = select i1 %27, i32 %25, i32 %26
	%29 = mul i32 %28, 1
	call void @llvm.memcpy.p0i8.p0i8.i32(i8* %20, i8* %24, i32 %29, i32 1, i1 0)
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@bout_hex = internal constant [16 x i8] [ i8 48, i8 49, i8 50, i8 51, i8 52, i8 53, i8 54, i8 55, i8 56, i8 57, i8 65, i8 66, i8 67, i8 68, i8 69, i8 70 ], align 1
define internal void @bout_BufIO_hex8(%bout.BufIO* %bo$, i8 zeroext %in$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%in = alloca i8
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i8 %in$, i8* %in
	%bp = alloca [0 x i8]*
	%0 = load %bout.BufIO** %bo
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = call [0 x i8]* @bout_BufIO_need(%bout.BufIO* %1, i32 2)
	%3 = bitcast [0 x i8]* %2 to [0 x i8]*
	store [0 x i8]* %3, [0 x i8]** %bp
	%4 = load [0 x i8]** %bp
	%5 = icmp ne [0 x i8]* %4, null
	br i1 %5, label %L.2, label %L.1
L.2:
	%6 = load i8* %in
	%7 = zext i8 %6 to i32
	%8 = lshr i32 %7, 4
	%9 = and i32 %8, 15
	%10 = getelementptr [16 x i8]* @bout_hex, i32 0, i32 %9
	%11 = load i8* %10
	%12 = load [0 x i8]** %bp
	%13 = getelementptr [0 x i8]* %12, i32 0, i32 0
	store i8 %11, i8* %13
	%14 = load i8* %in
	%15 = and i8 %14, 15
	%16 = zext i8 %15 to i32
	%17 = getelementptr [16 x i8]* @bout_hex, i32 0, i32 %16
	%18 = load i8* %17
	%19 = load [0 x i8]** %bp
	%20 = getelementptr [0 x i8]* %19, i32 0, i32 1
	store i8 %18, i8* %20
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
define internal void @bout_BufIO_hex16(%bout.BufIO* %bo$, i16 zeroext %in$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%in = alloca i16
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i16 %in$, i16* %in
	%bp = alloca [0 x i8]*
	%0 = load %bout.BufIO** %bo
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = call [0 x i8]* @bout_BufIO_need(%bout.BufIO* %1, i32 4)
	%3 = bitcast [0 x i8]* %2 to [0 x i8]*
	store [0 x i8]* %3, [0 x i8]** %bp
	%4 = load [0 x i8]** %bp
	%5 = icmp ne [0 x i8]* %4, null
	br i1 %5, label %L.2, label %L.1
L.2:
	%6 = load i16* %in
	%7 = zext i16 %6 to i32
	%8 = lshr i32 %7, 12
	%9 = and i32 %8, 15
	%10 = getelementptr [16 x i8]* @bout_hex, i32 0, i32 %9
	%11 = load i8* %10
	%12 = load [0 x i8]** %bp
	%13 = getelementptr [0 x i8]* %12, i32 0, i32 0
	store i8 %11, i8* %13
	%14 = load i16* %in
	%15 = zext i16 %14 to i32
	%16 = lshr i32 %15, 8
	%17 = and i32 %16, 15
	%18 = getelementptr [16 x i8]* @bout_hex, i32 0, i32 %17
	%19 = load i8* %18
	%20 = load [0 x i8]** %bp
	%21 = getelementptr [0 x i8]* %20, i32 0, i32 1
	store i8 %19, i8* %21
	%22 = load i16* %in
	%23 = zext i16 %22 to i32
	%24 = lshr i32 %23, 4
	%25 = and i32 %24, 15
	%26 = getelementptr [16 x i8]* @bout_hex, i32 0, i32 %25
	%27 = load i8* %26
	%28 = load [0 x i8]** %bp
	%29 = getelementptr [0 x i8]* %28, i32 0, i32 2
	store i8 %27, i8* %29
	%30 = load i16* %in
	%31 = and i16 %30, 15
	%32 = zext i16 %31 to i32
	%33 = getelementptr [16 x i8]* @bout_hex, i32 0, i32 %32
	%34 = load i8* %33
	%35 = load [0 x i8]** %bp
	%36 = getelementptr [0 x i8]* %35, i32 0, i32 3
	store i8 %34, i8* %36
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
define internal void @bout_BufIO_hex32(%bout.BufIO* %bo$, i32 %in$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%in = alloca i32
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i32 %in$, i32* %in
	%bp = alloca [0 x i8]*
	%i = alloca i32
	%0 = load %bout.BufIO** %bo
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = call [0 x i8]* @bout_BufIO_need(%bout.BufIO* %1, i32 8)
	%3 = bitcast [0 x i8]* %2 to [0 x i8]*
	store [0 x i8]* %3, [0 x i8]** %bp
	%4 = load [0 x i8]** %bp
	%5 = icmp ne [0 x i8]* %4, null
	br i1 %5, label %L.2, label %L.1
L.2:
	store i32 7, i32* %i
	br label %L.3
L.3:
	%6 = load i32* %in
	%7 = and i32 %6, 15
	%8 = getelementptr [16 x i8]* @bout_hex, i32 0, i32 %7
	%9 = load i8* %8
	%10 = load [0 x i8]** %bp
	%11 = load i32* %i
	%12 = getelementptr [0 x i8]* %10, i32 0, i32 %11
	store i8 %9, i8* %12
	%13 = load i32* %i
	%14 = icmp eq i32 %13, 0
	br i1 %14, label %L.4, label %L.5
L.5:
	%15 = load i32* %i
	%16 = sub i32 %15, 1
	store i32 %16, i32* %i
	%17 = load i32* %in
	%18 = lshr i32 %17, 4
	store i32 %18, i32* %in
	br label %L.3
L.4:
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
define internal void @bout_BufIO_hex64(%bout.BufIO* %bo$, i64 %in$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%in = alloca i64
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i64 %in$, i64* %in
	%bp = alloca [0 x i8]*
	%i = alloca i32
	%0 = load %bout.BufIO** %bo
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = call [0 x i8]* @bout_BufIO_need(%bout.BufIO* %1, i32 16)
	%3 = bitcast [0 x i8]* %2 to [0 x i8]*
	store [0 x i8]* %3, [0 x i8]** %bp
	%4 = load [0 x i8]** %bp
	%5 = icmp ne [0 x i8]* %4, null
	br i1 %5, label %L.2, label %L.1
L.2:
	store i32 15, i32* %i
	br label %L.3
L.3:
	%6 = load i64* %in
	%7 = trunc i64 %6 to i32
	%8 = and i32 %7, 15
	%9 = getelementptr [16 x i8]* @bout_hex, i32 0, i32 %8
	%10 = load i8* %9
	%11 = load [0 x i8]** %bp
	%12 = load i32* %i
	%13 = getelementptr [0 x i8]* %11, i32 0, i32 %12
	store i8 %10, i8* %13
	%14 = load i32* %i
	%15 = icmp eq i32 %14, 0
	br i1 %15, label %L.4, label %L.5
L.5:
	%16 = load i32* %i
	%17 = sub i32 %16, 1
	store i32 %17, i32* %i
	%18 = load i64* %in
	%19 = lshr i64 %18, 4
	store i64 %19, i64* %in
	br label %L.3
L.4:
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
define internal void @bout_BufIO_uint64(%bout.BufIO* %bo$, i64 %in$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%in = alloca i64
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i64 %in$, i64* %in
	%bp = alloca [0 x i8]*
	%i = alloca i32
	%n = alloca i32
	%buf = alloca [20 x i8]
	store i32 20, i32* %i
	%0 = load i64* %in
	%1 = icmp eq i64 %0, 0
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load i32* %i
	%3 = sub i32 %2, 1
	store i32 %3, i32* %i
	%4 = load i32* %i
	%5 = getelementptr [20 x i8]* %buf, i32 0, i32 %4
	store i8 48, i8* %5
	br label %L.1
L.3:
	br label %L.4
L.4:
	%6 = load i64* %in
	%7 = icmp ne i64 %6, 0
	%8 = xor i1 %7, true
	br i1 %8, label %L.5, label %L.6
L.6:
	%9 = load i32* %i
	%10 = sub i32 %9, 1
	store i32 %10, i32* %i
	%11 = load i64* %in
	%12 = urem i64 %11, 10
	%13 = add i64 %12, 48
	%14 = trunc i64 %13 to i8
	%15 = load i32* %i
	%16 = getelementptr [20 x i8]* %buf, i32 0, i32 %15
	store i8 %14, i8* %16
	%17 = load i64* %in
	%18 = udiv i64 %17, 10
	store i64 %18, i64* %in
	br label %L.4
L.5:
	br label %L.1
L.1:
	%19 = load i32* %i
	%20 = sub i32 20, %19
	store i32 %20, i32* %n
	%21 = load %bout.BufIO** %bo
	%22 = bitcast %bout.BufIO* %21 to %bout.BufIO*
	%23 = load i32* %n
	%24 = call [0 x i8]* @bout_BufIO_need(%bout.BufIO* %22, i32 %23)
	%25 = bitcast [0 x i8]* %24 to [0 x i8]*
	store [0 x i8]* %25, [0 x i8]** %bp
	%26 = load [0 x i8]** %bp
	%27 = icmp ne [0 x i8]* %26, null
	br i1 %27, label %L.8, label %L.7
L.8:
	%28 = load [0 x i8]** %bp
	%29 = getelementptr [0 x i8]* %28, i32 0, i32 0
	%30 = bitcast i8* %29 to [0 x i8]*
	%31 = bitcast [0 x i8]* %30 to i8*
	%32 = load i32* %i
	%33 = getelementptr [20 x i8]* %buf, i32 0, i32 %32
	%34 = bitcast i8* %33 to [20 x i8]*
	%35 = bitcast [20 x i8]* %34 to [0 x i8]*
	%36 = bitcast [0 x i8]* %35 to i8*
	%37 = load i32* %n
	%38 = load i32* %n
	%39 = icmp ult i32 %37, %38
	%40 = select i1 %39, i32 %37, i32 %38
	%41 = mul i32 %40, 1
	call void @llvm.memcpy.p0i8.p0i8.i32(i8* %31, i8* %36, i32 %41, i32 0, i1 0)
	br label %L.7
L.7:
	br label %return
return:
	ret void
}
define internal void @bout_BufIO_uint32(%bout.BufIO* %bo$, i32 %in$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%in = alloca i32
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i32 %in$, i32* %in
	%bp = alloca [0 x i8]*
	%i = alloca i32
	%n = alloca i32
	%buf = alloca [10 x i8]
	store i32 10, i32* %i
	%0 = load i32* %in
	%1 = icmp eq i32 %0, 0
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load i32* %i
	%3 = sub i32 %2, 1
	store i32 %3, i32* %i
	%4 = load i32* %i
	%5 = getelementptr [10 x i8]* %buf, i32 0, i32 %4
	store i8 48, i8* %5
	br label %L.1
L.3:
	br label %L.4
L.4:
	%6 = load i32* %in
	%7 = icmp ne i32 %6, 0
	%8 = xor i1 %7, true
	br i1 %8, label %L.5, label %L.6
L.6:
	%9 = load i32* %i
	%10 = sub i32 %9, 1
	store i32 %10, i32* %i
	%11 = load i32* %in
	%12 = urem i32 %11, 10
	%13 = add i32 %12, 48
	%14 = trunc i32 %13 to i8
	%15 = load i32* %i
	%16 = getelementptr [10 x i8]* %buf, i32 0, i32 %15
	store i8 %14, i8* %16
	%17 = load i32* %in
	%18 = udiv i32 %17, 10
	store i32 %18, i32* %in
	br label %L.4
L.5:
	br label %L.1
L.1:
	%19 = load i32* %i
	%20 = sub i32 10, %19
	store i32 %20, i32* %n
	%21 = load %bout.BufIO** %bo
	%22 = bitcast %bout.BufIO* %21 to %bout.BufIO*
	%23 = load i32* %n
	%24 = call [0 x i8]* @bout_BufIO_need(%bout.BufIO* %22, i32 %23)
	%25 = bitcast [0 x i8]* %24 to [0 x i8]*
	store [0 x i8]* %25, [0 x i8]** %bp
	%26 = load [0 x i8]** %bp
	%27 = icmp ne [0 x i8]* %26, null
	br i1 %27, label %L.8, label %L.7
L.8:
	%28 = load [0 x i8]** %bp
	%29 = getelementptr [0 x i8]* %28, i32 0, i32 0
	%30 = bitcast i8* %29 to [0 x i8]*
	%31 = bitcast [0 x i8]* %30 to i8*
	%32 = load i32* %i
	%33 = getelementptr [10 x i8]* %buf, i32 0, i32 %32
	%34 = bitcast i8* %33 to [10 x i8]*
	%35 = bitcast [10 x i8]* %34 to [0 x i8]*
	%36 = bitcast [0 x i8]* %35 to i8*
	%37 = load i32* %n
	%38 = load i32* %n
	%39 = icmp ult i32 %37, %38
	%40 = select i1 %39, i32 %37, i32 %38
	%41 = mul i32 %40, 1
	call void @llvm.memcpy.p0i8.p0i8.i32(i8* %31, i8* %36, i32 %41, i32 0, i1 0)
	br label %L.7
L.7:
	br label %return
return:
	ret void
}
define internal void @bout_BufIO_uint16(%bout.BufIO* %bo$, i16 zeroext %in$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%in = alloca i16
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i16 %in$, i16* %in
	%0 = load %bout.BufIO** %bo
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = load i16* %in
	%3 = zext i16 %2 to i32
	call void @bout_BufIO_uint32(%bout.BufIO* %1, i32 %3)
	br label %return
return:
	ret void
}
define internal void @bout_BufIO_uint8(%bout.BufIO* %bo$, i8 zeroext %in$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%in = alloca i8
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i8 %in$, i8* %in
	%0 = load %bout.BufIO** %bo
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = load i8* %in
	%3 = zext i8 %2 to i32
	call void @bout_BufIO_uint32(%bout.BufIO* %1, i32 %3)
	br label %return
return:
	ret void
}
define internal void @bout_BufIO_uint(%bout.BufIO* %bo$, i32 %in$) alwaysinline nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%in = alloca i32
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i32 %in$, i32* %in
	%0 = load %bout.BufIO** %bo
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = load i32* %in
	call void @bout_BufIO_uint32(%bout.BufIO* %1, i32 %2)
	br label %return
return:
	ret void
}
define internal void @bout_BufIO_int64(%bout.BufIO* %bo$, i64 %in$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%in = alloca i64
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i64 %in$, i64* %in
	%bp = alloca [0 x i8]*
	%ui = alloca i64
	%0 = load i64* %in
	%1 = icmp slt i64 %0, 0
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load %bout.BufIO** %bo
	%3 = bitcast %bout.BufIO* %2 to %bout.BufIO*
	%4 = call [0 x i8]* @bout_BufIO_need(%bout.BufIO* %3, i32 1)
	%5 = bitcast [0 x i8]* %4 to [0 x i8]*
	store [0 x i8]* %5, [0 x i8]** %bp
	%6 = load [0 x i8]** %bp
	%7 = getelementptr [0 x i8]* %6, i32 0, i32 0
	store i8 45, i8* %7
	%8 = load i64* %in
	%9 = sub i64 0, %8
	store i64 %9, i64* %ui
	br label %L.1
L.3:
	%10 = load i64* %in
	store i64 %10, i64* %ui
	br label %L.1
L.1:
	%11 = load %bout.BufIO** %bo
	%12 = bitcast %bout.BufIO* %11 to %bout.BufIO*
	%13 = load i64* %ui
	call void @bout_BufIO_uint64(%bout.BufIO* %12, i64 %13)
	br label %return
return:
	ret void
}
define internal void @bout_BufIO_int32(%bout.BufIO* %bo$, i32 %in$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%in = alloca i32
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i32 %in$, i32* %in
	%bp = alloca [0 x i8]*
	%ui = alloca i32
	%0 = load i32* %in
	%1 = icmp slt i32 %0, 0
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load %bout.BufIO** %bo
	%3 = bitcast %bout.BufIO* %2 to %bout.BufIO*
	%4 = call [0 x i8]* @bout_BufIO_need(%bout.BufIO* %3, i32 1)
	%5 = bitcast [0 x i8]* %4 to [0 x i8]*
	store [0 x i8]* %5, [0 x i8]** %bp
	%6 = load [0 x i8]** %bp
	%7 = getelementptr [0 x i8]* %6, i32 0, i32 0
	store i8 45, i8* %7
	%8 = load i32* %in
	%9 = sub i32 0, %8
	%10 = sext i32 %9 to i64
	%11 = trunc i64 %10 to i32
	store i32 %11, i32* %ui
	br label %L.1
L.3:
	%12 = load i32* %in
	%13 = sext i32 %12 to i64
	%14 = trunc i64 %13 to i32
	store i32 %14, i32* %ui
	br label %L.1
L.1:
	%15 = load %bout.BufIO** %bo
	%16 = bitcast %bout.BufIO* %15 to %bout.BufIO*
	%17 = load i32* %ui
	call void @bout_BufIO_uint32(%bout.BufIO* %16, i32 %17)
	br label %return
return:
	ret void
}
define internal void @bout_BufIO_int16(%bout.BufIO* %bo$, i16 signext %in$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%in = alloca i16
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i16 %in$, i16* %in
	%0 = load %bout.BufIO** %bo
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = load i16* %in
	%3 = sext i16 %2 to i32
	call void @bout_BufIO_int32(%bout.BufIO* %1, i32 %3)
	br label %return
return:
	ret void
}
define internal void @bout_BufIO_int8(%bout.BufIO* %bo$, i8 signext %in$) nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%in = alloca i8
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i8 %in$, i8* %in
	%0 = load %bout.BufIO** %bo
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = load i8* %in
	%3 = sext i8 %2 to i32
	call void @bout_BufIO_int32(%bout.BufIO* %1, i32 %3)
	br label %return
return:
	ret void
}
define internal void @bout_BufIO_int(%bout.BufIO* %bo$, i32 %in$) alwaysinline nounwind {
L.0:
	%bo = alloca %bout.BufIO*
	%in = alloca i32
	store %bout.BufIO* %bo$, %bout.BufIO** %bo
	store i32 %in$, i32* %in
	%0 = load %bout.BufIO** %bo
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = load i32* %in
	call void @bout_BufIO_int32(%bout.BufIO* %1, i32 %2)
	br label %return
return:
	ret void
}
@llvm_package_delimiter = internal constant i8 95, align 1
@llvm_anon_prefix = internal constant [3 x i8] c"A.\00", align 1
@llvm_scon_prefix = internal constant [3 x i8] c"S.\00", align 1
@llvm_f = internal global %bout.BufIO* zeroinitializer, align 4
@llvmdb_DWLanguage = internal constant i32 12, align 4
@llvmdb_LLVMDebugVersion = internal constant i32 786432, align 4
@llvmdb_meta = internal constant i8 33, align 1
@llvmdb_seqno = internal global i16 0, align 2
@llvmdb_unit = internal global i16 0, align 2
@llvmdb_file = internal global i16 0, align 2
@llvmdb_subr = internal global i16 0, align 2
@llvmdb_blok = internal global i16 0, align 2
@llvmdb_globals = internal global i16 0, align 2
@llvmdb_subprogs = internal global i16 0, align 2
@llvmdb_retained = internal global i16 0, align 2
@llvmdb_enums = internal global i16 0, align 2
@llvmdb_gvhead = internal global %symb.SymbNode* zeroinitializer, align 4
@llvmdb_gvtail = internal global %symb.SymbNode* zeroinitializer, align 4
@llvmdb_lvhead = internal global %symb.SymbNode* zeroinitializer, align 4
@llvmdb_lvtail = internal global %symb.SymbNode* zeroinitializer, align 4
@llvmdb_sphead = internal global %symb.SymbNode* zeroinitializer, align 4
@llvmdb_sptail = internal global %symb.SymbNode* zeroinitializer, align 4
%llvmdb.LineT = type {%llvmdb.LineT*, i16, i16, i16}
@llvmdb_lnhead = internal global %llvmdb.LineT* zeroinitializer, align 4
@llvmdb_lntail = internal global %llvmdb.LineT* zeroinitializer, align 4
@llvmdb_lexblkno = internal global i32 0, align 4
define internal zeroext i16 @llvmdb_GetLineContext() nounwind {
L.0:
	%rv.0 = alloca i16
	%0 = load i16* @llvmdb_blok
	%1 = icmp ne i16 %0, 0
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load i16* @llvmdb_blok
	store i16 %2, i16* %rv.0
	br label %return
L.1:
	%3 = load i16* @llvmdb_file
	store i16 %3, i16* %rv.0
	br label %return
return:
	%4 = load i16* %rv.0
	ret i16 %4
}
define internal void @llvmdb_PSeq(i16 zeroext %n$) nounwind {
L.0:
	%n = alloca i16
	store i16 %n$, i16* %n
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %1, i8 33)
	%2 = load %bout.BufIO** @llvm_f
	%3 = bitcast %bout.BufIO* %2 to %bout.BufIO*
	%4 = load i16* %n
	%5 = zext i16 %4 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %3, i32 %5)
	br label %return
return:
	ret void
}
@S.611 = internal constant [15 x i8] c" = metadata !{\00"
define internal void @llvmdb_PMetaSeq(i16 zeroext %n$) nounwind {
L.0:
	%n = alloca i16
	store i16 %n$, i16* %n
	%0 = load i16* %n
	call void @llvmdb_PSeq(i16 %0)
	%1 = load %bout.BufIO** @llvm_f
	%2 = bitcast %bout.BufIO* %1 to %bout.BufIO*
	%3 = getelementptr [15 x i8]* @S.611
	%4 = bitcast [15 x i8]* %3 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %2, [0 x i8]* %4)
	br label %return
return:
	ret void
}
@S.612 = internal constant [3 x i8] c"}\0A\00"
@S.613 = internal constant [3 x i8] c", \00"
@S.614 = internal constant [3 x i8] c" )\00"
define internal void @llvmdb_PTerminator(i8 zeroext %term$) nounwind {
L.0:
	%term = alloca i8
	store i8 %term$, i8* %term
	%0 = load i8* %term
	%1 = zext i8 %0 to i32
	switch i32 %1, label %L.1 [
		i32 1, label %L.3
		i32 0, label %L.4
		i32 2, label %L.5
	]
L.3:
	%2 = load %bout.BufIO** @llvm_f
	%3 = bitcast %bout.BufIO* %2 to %bout.BufIO*
	%4 = getelementptr [3 x i8]* @S.612
	%5 = bitcast [3 x i8]* %4 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %3, [0 x i8]* %5)
	br label %L.2
L.4:
	%6 = load %bout.BufIO** @llvm_f
	%7 = bitcast %bout.BufIO* %6 to %bout.BufIO*
	%8 = getelementptr [3 x i8]* @S.613
	%9 = bitcast [3 x i8]* %8 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %7, [0 x i8]* %9)
	br label %L.2
L.5:
	%10 = load %bout.BufIO** @llvm_f
	%11 = bitcast %bout.BufIO* %10 to %bout.BufIO*
	%12 = getelementptr [3 x i8]* @S.614
	%13 = bitcast [3 x i8]* %12 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %11, [0 x i8]* %13)
	br label %L.2
L.1:
	br label %L.2
L.2:
	br label %return
return:
	ret void
}
@S.615 = internal constant [5 x i8] c"null\00"
define internal void @llvmdb_PNull(i8 zeroext %term$) nounwind {
L.0:
	%term = alloca i8
	store i8 %term$, i8* %term
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = getelementptr [5 x i8]* @S.615
	%3 = bitcast [5 x i8]* %2 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %1, [0 x i8]* %3)
	%4 = load i8* %term
	call void @llvmdb_PTerminator(i8 %4)
	br label %return
return:
	ret void
}
@S.616 = internal constant [11 x i8] c"metadata !\00"
define internal void @llvmdb_PMetaRef(i16 zeroext %n$, i8 zeroext %term$) nounwind {
L.0:
	%n = alloca i16
	%term = alloca i8
	store i16 %n$, i16* %n
	store i8 %term$, i8* %term
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = getelementptr [11 x i8]* @S.616
	%3 = bitcast [11 x i8]* %2 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %1, [0 x i8]* %3)
	%4 = load %bout.BufIO** @llvm_f
	%5 = bitcast %bout.BufIO* %4 to %bout.BufIO*
	%6 = load i16* %n
	%7 = zext i16 %6 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %5, i32 %7)
	%8 = load i8* %term
	call void @llvmdb_PTerminator(i8 %8)
	br label %return
return:
	ret void
}
@S.617 = internal constant [4 x i8] c"i1 \00"
@S.618 = internal constant [5 x i8] c"true\00"
@S.619 = internal constant [6 x i8] c"false\00"
define internal void @llvmdb_PBoolean(i8 zeroext %b$, i8 zeroext %term$) nounwind {
L.0:
	%b = alloca i8
	%term = alloca i8
	store i8 %b$, i8* %b
	store i8 %term$, i8* %term
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = getelementptr [4 x i8]* @S.617
	%3 = bitcast [4 x i8]* %2 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %1, [0 x i8]* %3)
	%4 = load i8* %b
	%5 = icmp ne i8 %4, 0
	br i1 %5, label %L.2, label %L.3
L.2:
	%6 = load %bout.BufIO** @llvm_f
	%7 = bitcast %bout.BufIO* %6 to %bout.BufIO*
	%8 = getelementptr [5 x i8]* @S.618
	%9 = bitcast [5 x i8]* %8 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %7, [0 x i8]* %9)
	br label %L.1
L.3:
	%10 = load %bout.BufIO** @llvm_f
	%11 = bitcast %bout.BufIO* %10 to %bout.BufIO*
	%12 = getelementptr [6 x i8]* @S.619
	%13 = bitcast [6 x i8]* %12 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %11, [0 x i8]* %13)
	br label %L.1
L.1:
	%14 = load i8* %term
	call void @llvmdb_PTerminator(i8 %14)
	br label %return
return:
	ret void
}
@S.620 = internal constant [5 x i8] c"i32 \00"
define internal void @llvmdb_P32(i32 %v$, i8 zeroext %term$) nounwind {
L.0:
	%v = alloca i32
	%term = alloca i8
	store i32 %v$, i32* %v
	store i8 %term$, i8* %term
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = getelementptr [5 x i8]* @S.620
	%3 = bitcast [5 x i8]* %2 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %1, [0 x i8]* %3)
	%4 = load %bout.BufIO** @llvm_f
	%5 = bitcast %bout.BufIO* %4 to %bout.BufIO*
	%6 = load i32* %v
	call void @bout_BufIO_uint32(%bout.BufIO* %5, i32 %6)
	%7 = load i8* %term
	call void @llvmdb_PTerminator(i8 %7)
	br label %return
return:
	ret void
}
@S.621 = internal constant [5 x i8] c"i64 \00"
define internal void @llvmdb_P64(i64 %v$, i8 zeroext %term$) nounwind {
L.0:
	%v = alloca i64
	%term = alloca i8
	store i64 %v$, i64* %v
	store i8 %term$, i8* %term
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = getelementptr [5 x i8]* @S.621
	%3 = bitcast [5 x i8]* %2 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %1, [0 x i8]* %3)
	%4 = load %bout.BufIO** @llvm_f
	%5 = bitcast %bout.BufIO* %4 to %bout.BufIO*
	%6 = load i64* %v
	call void @bout_BufIO_uint64(%bout.BufIO* %5, i64 %6)
	%7 = load i8* %term
	call void @llvmdb_PTerminator(i8 %7)
	br label %return
return:
	ret void
}
define internal void @llvmdb_PHeader(i16 zeroext %tag$, i16 zeroext %dwat$) nounwind {
L.0:
	%tag = alloca i16
	%dwat = alloca i16
	store i16 %tag$, i16* %tag
	store i16 %dwat$, i16* %dwat
	%0 = load i16* %tag
	call void @llvmdb_PMetaSeq(i16 %0)
	%1 = load i16* %dwat
	%2 = zext i16 %1 to i32
	%3 = add i32 %2, 786432
	call void @llvmdb_P32(i32 %3, i8 0)
	br label %return
return:
	ret void
}
@S.622 = internal constant [12 x i8] c"metadata !\22\00"
define internal void @llvmdb_PString([0 x i8]* %s$, i8 zeroext %term$) nounwind {
L.0:
	%s = alloca [0 x i8]*
	%term = alloca i8
	store [0 x i8]* %s$, [0 x i8]** %s
	store i8 %term$, i8* %term
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = getelementptr [12 x i8]* @S.622
	%3 = bitcast [12 x i8]* %2 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %1, [0 x i8]* %3)
	%4 = load [0 x i8]** %s
	%5 = icmp ne [0 x i8]* %4, null
	br i1 %5, label %L.2, label %L.1
L.2:
	%6 = load %bout.BufIO** @llvm_f
	%7 = bitcast %bout.BufIO* %6 to %bout.BufIO*
	%8 = load [0 x i8]** %s
	%9 = bitcast [0 x i8]* %8 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %7, [0 x i8]* %9)
	br label %L.1
L.1:
	%10 = load %bout.BufIO** @llvm_f
	%11 = bitcast %bout.BufIO* %10 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %11, i8 34)
	%12 = load i8* %term
	call void @llvmdb_PTerminator(i8 %12)
	br label %return
return:
	ret void
}
@S.623 = internal constant [12 x i8] c"metadata !\22\00"
define internal void @llvmdb_PString2([0 x i8]* %s1$, [0 x i8]* %s2$, i8 zeroext %delim$, i8 zeroext %term$) nounwind {
L.0:
	%s1 = alloca [0 x i8]*
	%s2 = alloca [0 x i8]*
	%delim = alloca i8
	%term = alloca i8
	store [0 x i8]* %s1$, [0 x i8]** %s1
	store [0 x i8]* %s2$, [0 x i8]** %s2
	store i8 %delim$, i8* %delim
	store i8 %term$, i8* %term
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = getelementptr [12 x i8]* @S.623
	%3 = bitcast [12 x i8]* %2 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %1, [0 x i8]* %3)
	%4 = load [0 x i8]** %s1
	%5 = icmp ne [0 x i8]* %4, null
	br i1 %5, label %L.2, label %L.1
L.2:
	%6 = load %bout.BufIO** @llvm_f
	%7 = bitcast %bout.BufIO* %6 to %bout.BufIO*
	%8 = load [0 x i8]** %s1
	%9 = bitcast [0 x i8]* %8 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %7, [0 x i8]* %9)
	%10 = load %bout.BufIO** @llvm_f
	%11 = bitcast %bout.BufIO* %10 to %bout.BufIO*
	%12 = load i8* %delim
	call void @bout_BufIO_chr(%bout.BufIO* %11, i8 %12)
	br label %L.1
L.1:
	%13 = load [0 x i8]** %s2
	%14 = icmp ne [0 x i8]* %13, null
	br i1 %14, label %L.4, label %L.3
L.4:
	%15 = load %bout.BufIO** @llvm_f
	%16 = bitcast %bout.BufIO* %15 to %bout.BufIO*
	%17 = load [0 x i8]** %s2
	%18 = bitcast [0 x i8]* %17 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %16, [0 x i8]* %18)
	br label %L.3
L.3:
	%19 = load %bout.BufIO** @llvm_f
	%20 = bitcast %bout.BufIO* %19 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %20, i8 34)
	%21 = load i8* %term
	call void @llvmdb_PTerminator(i8 %21)
	br label %return
return:
	ret void
}
define internal void @llvmdb_PName(%symb.SymbNode* %s$, i8 zeroext %term$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	%term = alloca i8
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store i8 %term$, i8* %term
	%0 = load %symb.SymbNode** %s
	%1 = icmp ne %symb.SymbNode* %0, null
	br i1 %1, label %L.1, label %L.2
L.1:
	%2 = load %symb.SymbNode** %s
	%3 = getelementptr %symb.SymbNode* %2, i32 0, i32 22
	%4 = getelementptr [0 x i8]* %3
	%5 = bitcast [0 x i8]* %4 to [0 x i8]*
	%6 = call i8 @symb_IsAnon([0 x i8]* %5)
	%7 = icmp ne i8 %6, 0
	%8 = xor i1 %7, true
	br label %L.2
L.2:
	%9 = phi i1 [ false, %L.0 ], [ %8, %L.1 ]
	br i1 %9, label %L.4, label %L.5
L.4:
	%10 = load %symb.SymbNode** %s
	%11 = getelementptr %symb.SymbNode* %10, i32 0, i32 22
	%12 = getelementptr [0 x i8]* %11
	%13 = bitcast [0 x i8]* %12 to [0 x i8]*
	%14 = load i8* %term
	call void @llvmdb_PString([0 x i8]* %13, i8 %14)
	br label %L.3
L.5:
	%15 = load i8* %term
	call void @llvmdb_PString([0 x i8]* null, i8 %15)
	br label %L.3
L.3:
	br label %return
return:
	ret void
}
define internal void @llvmdb_PFullName(%symb.SymbNode* %s$, i8 zeroext %term$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	%term = alloca i8
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store i8 %term$, i8* %term
	%0 = load %symb.SymbNode** %s
	%1 = icmp ne %symb.SymbNode* %0, null
	br i1 %1, label %L.1, label %L.2
L.1:
	%2 = load %symb.SymbNode** %s
	%3 = getelementptr %symb.SymbNode* %2, i32 0, i32 22
	%4 = getelementptr [0 x i8]* %3
	%5 = bitcast [0 x i8]* %4 to [0 x i8]*
	%6 = call i8 @symb_IsAnon([0 x i8]* %5)
	%7 = icmp ne i8 %6, 0
	%8 = xor i1 %7, true
	br label %L.2
L.2:
	%9 = phi i1 [ false, %L.0 ], [ %8, %L.1 ]
	br i1 %9, label %L.4, label %L.5
L.4:
	%10 = load %symb.SymbNode** %s
	%11 = getelementptr %symb.SymbNode* %10, i32 0, i32 2
	%12 = load %symb.SymbNode** %11
	%13 = icmp ne %symb.SymbNode* %12, null
	br i1 %13, label %L.7, label %L.8
L.7:
	%14 = load %symb.SymbNode** %s
	%15 = getelementptr %symb.SymbNode* %14, i32 0, i32 2
	%16 = load %symb.SymbNode** %15
	%17 = getelementptr %symb.SymbNode* %16, i32 0, i32 22
	%18 = getelementptr [0 x i8]* %17
	%19 = bitcast [0 x i8]* %18 to [0 x i8]*
	%20 = load %symb.SymbNode** %s
	%21 = getelementptr %symb.SymbNode* %20, i32 0, i32 22
	%22 = getelementptr [0 x i8]* %21
	%23 = bitcast [0 x i8]* %22 to [0 x i8]*
	%24 = load i8* %term
	call void @llvmdb_PString2([0 x i8]* %19, [0 x i8]* %23, i8 46, i8 %24)
	br label %L.6
L.8:
	%25 = load %symb.SymbNode** %s
	%26 = getelementptr %symb.SymbNode* %25, i32 0, i32 22
	%27 = getelementptr [0 x i8]* %26
	%28 = bitcast [0 x i8]* %27 to [0 x i8]*
	%29 = load i8* %term
	call void @llvmdb_PString([0 x i8]* %28, i8 %29)
	br label %L.6
L.6:
	br label %L.3
L.5:
	%30 = load i8* %term
	call void @llvmdb_PString([0 x i8]* null, i8 %30)
	br label %L.3
L.3:
	br label %return
return:
	ret void
}
define internal void @llvmdb_PLinkName(%symb.SymbNode* %s$, i8 zeroext %term$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	%term = alloca i8
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store i8 %term$, i8* %term
	%0 = load %symb.SymbNode** %s
	%1 = icmp ne %symb.SymbNode* %0, null
	br i1 %1, label %L.1, label %L.2
L.1:
	%2 = load %symb.SymbNode** %s
	%3 = getelementptr %symb.SymbNode* %2, i32 0, i32 22
	%4 = getelementptr [0 x i8]* %3
	%5 = bitcast [0 x i8]* %4 to [0 x i8]*
	%6 = call i8 @symb_IsAnon([0 x i8]* %5)
	%7 = icmp ne i8 %6, 0
	%8 = xor i1 %7, true
	br label %L.2
L.2:
	%9 = phi i1 [ false, %L.0 ], [ %8, %L.1 ]
	br i1 %9, label %L.4, label %L.5
L.4:
	%10 = load %symb.SymbNode** %s
	%11 = getelementptr %symb.SymbNode* %10, i32 0, i32 2
	%12 = load %symb.SymbNode** %11
	%13 = icmp ne %symb.SymbNode* %12, null
	br i1 %13, label %L.7, label %L.8
L.7:
	%14 = load %symb.SymbNode** %s
	%15 = getelementptr %symb.SymbNode* %14, i32 0, i32 2
	%16 = load %symb.SymbNode** %15
	%17 = getelementptr %symb.SymbNode* %16, i32 0, i32 22
	%18 = getelementptr [0 x i8]* %17
	%19 = bitcast [0 x i8]* %18 to [0 x i8]*
	%20 = load %symb.SymbNode** %s
	%21 = getelementptr %symb.SymbNode* %20, i32 0, i32 22
	%22 = getelementptr [0 x i8]* %21
	%23 = bitcast [0 x i8]* %22 to [0 x i8]*
	%24 = load i8* %term
	call void @llvmdb_PString2([0 x i8]* %19, [0 x i8]* %23, i8 95, i8 %24)
	br label %L.6
L.8:
	%25 = load %symb.SymbNode** %s
	%26 = getelementptr %symb.SymbNode* %25, i32 0, i32 22
	%27 = getelementptr [0 x i8]* %26
	%28 = bitcast [0 x i8]* %27 to [0 x i8]*
	%29 = load i8* %term
	call void @llvmdb_PString([0 x i8]* %28, i8 %29)
	br label %L.6
L.6:
	br label %L.3
L.5:
	%30 = load i8* %term
	call void @llvmdb_PString([0 x i8]* null, i8 %30)
	br label %L.3
L.3:
	br label %return
return:
	ret void
}
define internal void @llvmdb_PContext(i8 zeroext %term$) nounwind {
L.0:
	%term = alloca i8
	store i8 %term$, i8* %term
	%tag = alloca i16
	%0 = load i16* @llvmdb_file
	store i16 %0, i16* %tag
	%1 = load i16* %tag
	%2 = load i8* %term
	call void @llvmdb_PMetaRef(i16 %1, i8 %2)
	br label %return
return:
	ret void
}
define internal zeroext i16 @llvmdb_PListStart() nounwind {
L.0:
	%rv.0 = alloca i16
	%tag = alloca i16
	%0 = load i16* @llvmdb_seqno
	%1 = add i16 %0, 1
	store i16 %1, i16* @llvmdb_seqno
	%2 = load i16* @llvmdb_seqno
	store i16 %2, i16* %tag
	%3 = load i16* %tag
	call void @llvmdb_PMetaSeq(i16 %3)
	%4 = load i16* %tag
	store i16 %4, i16* %rv.0
	br label %return
return:
	%5 = load i16* %rv.0
	ret i16 %5
}
define internal zeroext i16 @llvmdb_PEmptyList() nounwind {
L.0:
	%rv.0 = alloca i16
	%tag = alloca i16
	%0 = call i16 @llvmdb_PListStart()
	store i16 %0, i16* %tag
	call void @llvmdb_P32(i32 0, i8 1)
	%1 = load i16* %tag
	store i16 %1, i16* %rv.0
	br label %return
return:
	%2 = load i16* %rv.0
	ret i16 %2
}
define internal i32 @llvmdb_DefFormals(%symb.SymbNode* %ps$) nounwind {
L.0:
	%rv.0 = alloca i32
	%ps = alloca %symb.SymbNode*
	store %symb.SymbNode* %ps$, %symb.SymbNode** %ps
	%fs = alloca %symb.SymbNode*
	%n = alloca i32
	store i32 0, i32* %n
	%0 = load %symb.SymbNode** %ps
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 3
	%2 = load %symb.SymbNode** %1
	%3 = bitcast %symb.SymbNode* %2 to %symb.SymbNode*
	store %symb.SymbNode* %3, %symb.SymbNode** %fs
	br label %L.1
L.1:
	%4 = load %symb.SymbNode** %fs
	%5 = icmp ne %symb.SymbNode* %4, null
	%6 = xor i1 %5, true
	br i1 %6, label %L.2, label %L.3
L.3:
	%7 = load i32* %n
	%8 = add i32 %7, 1
	store i32 %8, i32* %n
	%9 = load %symb.SymbNode** %fs
	%10 = getelementptr %symb.SymbNode* %9, i32 0, i32 1
	%11 = load %type.TypeNode** %10
	%12 = call i16 @llvmdb_DefType(%type.TypeNode* %11)
	%13 = load %symb.SymbNode** %fs
	%14 = getelementptr %symb.SymbNode* %13, i32 0, i32 0
	%15 = load %symb.SymbNode** %14
	%16 = bitcast %symb.SymbNode* %15 to %symb.SymbNode*
	store %symb.SymbNode* %16, %symb.SymbNode** %fs
	br label %L.1
L.2:
	%17 = load i32* %n
	store i32 %17, i32* %rv.0
	br label %return
return:
	%18 = load i32* %rv.0
	ret i32 %18
}
define internal zeroext i16 @llvmdb_DefRetvs(%symb.SymbNode* %ps$) nounwind {
L.0:
	%rv.0 = alloca i16
	%ps = alloca %symb.SymbNode*
	store %symb.SymbNode* %ps$, %symb.SymbNode** %ps
	%retvs = alloca i16
	%tag = alloca i16
	%tl = alloca %type.TypeListEntry*
	%term = alloca i8
	%0 = load %symb.SymbNode** %ps
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 4
	%2 = load %type.TypeListEntry** %1
	store %type.TypeListEntry* %2, %type.TypeListEntry** %tl
	%3 = load %type.TypeListEntry** %tl
	%4 = icmp eq %type.TypeListEntry* %3, null
	br i1 %4, label %L.2, label %L.1
L.2:
	store i16 0, i16* %rv.0
	br label %return
L.1:
	br label %L.3
L.3:
	%5 = load %type.TypeListEntry** %tl
	%6 = icmp ne %type.TypeListEntry* %5, null
	%7 = xor i1 %6, true
	br i1 %7, label %L.4, label %L.5
L.5:
	%8 = load %type.TypeListEntry** %tl
	%9 = getelementptr %type.TypeListEntry* %8, i32 0, i32 1
	%10 = load %type.TypeNode** %9
	%11 = bitcast %type.TypeNode* %10 to %type.TypeNode*
	%12 = call i16 @llvmdb_DefType(%type.TypeNode* %11)
	%13 = load %type.TypeListEntry** %tl
	%14 = getelementptr %type.TypeListEntry* %13, i32 0, i32 0
	%15 = load %type.TypeListEntry** %14
	%16 = bitcast %type.TypeListEntry* %15 to %type.TypeListEntry*
	store %type.TypeListEntry* %16, %type.TypeListEntry** %tl
	br label %L.3
L.4:
	%17 = load %symb.SymbNode** %ps
	%18 = getelementptr %symb.SymbNode* %17, i32 0, i32 4
	%19 = load %type.TypeListEntry** %18
	store %type.TypeListEntry* %19, %type.TypeListEntry** %tl
	%20 = load %type.TypeListEntry** %tl
	%21 = getelementptr %type.TypeListEntry* %20, i32 0, i32 0
	%22 = load %type.TypeListEntry** %21
	%23 = icmp eq %type.TypeListEntry* %22, null
	br i1 %23, label %L.7, label %L.8
L.7:
	%24 = load %type.TypeListEntry** %tl
	%25 = getelementptr %type.TypeListEntry* %24, i32 0, i32 1
	%26 = load %type.TypeNode** %25
	%27 = getelementptr %type.TypeNode* %26, i32 0, i32 12
	%28 = load i16* %27
	store i16 %28, i16* %retvs
	br label %L.6
L.8:
	%29 = load i16* @llvmdb_seqno
	%30 = add i16 %29, 1
	store i16 %30, i16* @llvmdb_seqno
	%31 = load i16* @llvmdb_seqno
	store i16 %31, i16* %retvs
	%32 = load i16* %retvs
	call void @llvmdb_PMetaSeq(i16 %32)
	store i8 0, i8* %term
	br label %L.9
L.9:
	%33 = load %type.TypeListEntry** %tl
	%34 = icmp ne %type.TypeListEntry* %33, null
	%35 = xor i1 %34, true
	br i1 %35, label %L.10, label %L.11
L.11:
	%36 = load %type.TypeListEntry** %tl
	%37 = getelementptr %type.TypeListEntry* %36, i32 0, i32 1
	%38 = load %type.TypeNode** %37
	%39 = getelementptr %type.TypeNode* %38, i32 0, i32 12
	%40 = load i16* %39
	store i16 %40, i16* %tag
	%41 = load %type.TypeListEntry** %tl
	%42 = getelementptr %type.TypeListEntry* %41, i32 0, i32 0
	%43 = load %type.TypeListEntry** %42
	%44 = bitcast %type.TypeListEntry* %43 to %type.TypeListEntry*
	store %type.TypeListEntry* %44, %type.TypeListEntry** %tl
	%45 = load %type.TypeListEntry** %tl
	%46 = icmp eq %type.TypeListEntry* %45, null
	br i1 %46, label %L.13, label %L.12
L.13:
	store i8 1, i8* %term
	br label %L.12
L.12:
	%47 = load i16* %tag
	%48 = load i8* %term
	call void @llvmdb_PMetaRef(i16 %47, i8 %48)
	br label %L.9
L.10:
	br label %L.6
L.6:
	%49 = load i16* %retvs
	store i16 %49, i16* %rv.0
	br label %return
return:
	%50 = load i16* %rv.0
	ret i16 %50
}
define internal zeroext i16 @llvmdb_DefBasicType(i8 zeroext %dwtype$, %type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca i16
	%dwtype = alloca i8
	%t = alloca %type.TypeNode*
	store i8 %dwtype$, i8* %dwtype
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tagt = alloca i16
	%0 = load i16* @llvmdb_seqno
	%1 = add i16 %0, 1
	store i16 %1, i16* @llvmdb_seqno
	%2 = load i16* @llvmdb_seqno
	store i16 %2, i16* %tagt
	%3 = load i16* %tagt
	call void @llvmdb_PHeader(i16 %3, i16 36)
	call void @llvmdb_PNull(i8 0)
	%4 = load %type.TypeNode** %t
	%5 = getelementptr %type.TypeNode* %4, i32 0, i32 3
	%6 = load %symb.SymbNode** %5
	%7 = bitcast %symb.SymbNode* %6 to %symb.SymbNode*
	call void @llvmdb_PName(%symb.SymbNode* %7, i8 0)
	call void @llvmdb_PNull(i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	%8 = load %type.TypeNode** %t
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 10
	%10 = load i32* %9
	%11 = zext i32 %10 to i64
	call void @llvmdb_P64(i64 %11, i8 0)
	%12 = load %type.TypeNode** %t
	%13 = getelementptr %type.TypeNode* %12, i32 0, i32 11
	%14 = load i32* %13
	%15 = zext i32 %14 to i64
	call void @llvmdb_P64(i64 %15, i8 0)
	call void @llvmdb_P64(i64 0, i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	%16 = load i8* %dwtype
	%17 = zext i8 %16 to i32
	call void @llvmdb_P32(i32 %17, i8 1)
	%18 = load i16* %tagt
	store i16 %18, i16* %rv.0
	br label %return
return:
	%19 = load i16* %rv.0
	ret i16 %19
}
define internal void @llvmdb_PTypeHeader(i16 zeroext %tag$, i16 zeroext %dwat$, %type.TypeNode* %t$) nounwind {
L.0:
	%tag = alloca i16
	%dwat = alloca i16
	%t = alloca %type.TypeNode*
	store i16 %tag$, i16* %tag
	store i16 %dwat$, i16* %dwat
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%0 = load i16* %tag
	%1 = load i16* %dwat
	call void @llvmdb_PHeader(i16 %0, i16 %1)
	%2 = load i16* @llvmdb_file
	call void @llvmdb_PMetaRef(i16 %2, i8 0)
	%3 = load %type.TypeNode** %t
	%4 = getelementptr %type.TypeNode* %3, i32 0, i32 3
	%5 = load %symb.SymbNode** %4
	%6 = bitcast %symb.SymbNode* %5 to %symb.SymbNode*
	call void @llvmdb_PName(%symb.SymbNode* %6, i8 0)
	%7 = load i16* @llvmdb_file
	call void @llvmdb_PMetaRef(i16 %7, i8 0)
	%8 = load %type.TypeNode** %t
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 3
	%10 = load %symb.SymbNode** %9
	%11 = icmp ne %symb.SymbNode* %10, null
	br i1 %11, label %L.2, label %L.3
L.2:
	%12 = load %type.TypeNode** %t
	%13 = getelementptr %type.TypeNode* %12, i32 0, i32 3
	%14 = load %symb.SymbNode** %13
	%15 = getelementptr %symb.SymbNode* %14, i32 0, i32 11
	%16 = load i16* %15
	%17 = zext i16 %16 to i32
	call void @llvmdb_P32(i32 %17, i8 0)
	br label %L.1
L.3:
	call void @llvmdb_P32(i32 0, i8 0)
	br label %L.1
L.1:
	%18 = load %type.TypeNode** %t
	%19 = getelementptr %type.TypeNode* %18, i32 0, i32 10
	%20 = load i32* %19
	%21 = zext i32 %20 to i64
	call void @llvmdb_P64(i64 %21, i8 0)
	%22 = load %type.TypeNode** %t
	%23 = getelementptr %type.TypeNode* %22, i32 0, i32 11
	%24 = load i32* %23
	%25 = zext i32 %24 to i64
	call void @llvmdb_P64(i64 %25, i8 0)
	call void @llvmdb_P64(i64 0, i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	br label %return
return:
	ret void
}
define internal zeroext i16 @llvmdb_DefRefType(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca i16
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tagb = alloca i16
	%tagr = alloca i16
	%0 = load %type.TypeNode** %t
	%1 = getelementptr %type.TypeNode* %0, i32 0, i32 14
	%2 = load i8* %1
	%3 = icmp eq i8 %2, 8
	br i1 %3, label %L.2, label %L.3
L.2:
	%4 = load i16* @llvmdb_seqno
	%5 = add i16 %4, 1
	store i16 %5, i16* @llvmdb_seqno
	%6 = load i16* @llvmdb_seqno
	store i16 %6, i16* %tagb
	%7 = load i16* %tagb
	%8 = load %type.TypeNode** %t
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 4
	%10 = load %symb.SymbNode** %9
	%11 = bitcast %symb.SymbNode* %10 to %symb.SymbNode*
	call void @llvmdb_DefSubroutine(i16 %7, %symb.SymbNode* %11)
	br label %L.1
L.3:
	%12 = load %type.TypeNode** %t
	%13 = getelementptr %type.TypeNode* %12, i32 0, i32 0
	%14 = load %type.TypeNode** %13
	%15 = bitcast %type.TypeNode* %14 to %type.TypeNode*
	%16 = call i16 @llvmdb_DefType(%type.TypeNode* %15)
	store i16 %16, i16* %tagb
	br label %L.1
L.1:
	%17 = load i16* @llvmdb_seqno
	%18 = add i16 %17, 1
	store i16 %18, i16* @llvmdb_seqno
	%19 = load i16* @llvmdb_seqno
	store i16 %19, i16* %tagr
	%20 = load i16* %tagr
	%21 = load %type.TypeNode** %t
	call void @llvmdb_PTypeHeader(i16 %20, i16 15, %type.TypeNode* %21)
	%22 = load i16* %tagb
	call void @llvmdb_PMetaRef(i16 %22, i8 1)
	%23 = load i16* %tagr
	store i16 %23, i16* %rv.0
	br label %return
return:
	%24 = load i16* %rv.0
	ret i16 %24
}
define internal zeroext i16 @llvmdb_DefRange(i64 %lo$, i64 %hi$) nounwind {
L.0:
	%rv.0 = alloca i16
	%lo = alloca i64
	%hi = alloca i64
	store i64 %lo$, i64* %lo
	store i64 %hi$, i64* %hi
	%tagr = alloca i16
	%0 = load i16* @llvmdb_seqno
	%1 = add i16 %0, 1
	store i16 %1, i16* @llvmdb_seqno
	%2 = load i16* @llvmdb_seqno
	store i16 %2, i16* %tagr
	%3 = load i16* %tagr
	call void @llvmdb_PHeader(i16 %3, i16 33)
	%4 = load i64* %lo
	call void @llvmdb_P64(i64 %4, i8 0)
	%5 = load i64* %hi
	call void @llvmdb_P64(i64 %5, i8 1)
	%6 = load i16* %tagr
	store i16 %6, i16* %rv.0
	br label %return
return:
	%7 = load i16* %rv.0
	ret i16 %7
}
define internal zeroext i16 @llvmdb_DefEnumConst(%symb.SymbNode* %s$) nounwind {
L.0:
	%rv.0 = alloca i16
	%s = alloca %symb.SymbNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%tagc = alloca i16
	%0 = load i16* @llvmdb_seqno
	%1 = add i16 %0, 1
	store i16 %1, i16* @llvmdb_seqno
	%2 = load i16* @llvmdb_seqno
	store i16 %2, i16* %tagc
	%3 = load i16* %tagc
	call void @llvmdb_PHeader(i16 %3, i16 40)
	%4 = load %symb.SymbNode** %s
	call void @llvmdb_PName(%symb.SymbNode* %4, i8 0)
	%5 = load %symb.SymbNode** %s
	%6 = getelementptr %symb.SymbNode* %5, i32 0, i32 8
	%7 = load %ast.AstNode** %6
	%8 = getelementptr %ast.AstNode* %7, i32 0, i32 10
	%9 = load i64* %8
	call void @llvmdb_P64(i64 %9, i8 1)
	%10 = load i16* %tagc
	store i16 %10, i16* %rv.0
	br label %return
return:
	%11 = load i16* %rv.0
	ret i16 %11
}
define internal zeroext i16 @llvmdb_DefEnumerationType(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca i16
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tag = alloca i16
	%list = alloca i16
	%tage = alloca i16
	%s = alloca %symb.SymbNode*
	%term = alloca i8
	%0 = load %type.TypeNode** %t
	%1 = getelementptr %type.TypeNode* %0, i32 0, i32 4
	%2 = load %symb.SymbNode** %1
	%3 = bitcast %symb.SymbNode* %2 to %symb.SymbNode*
	store %symb.SymbNode* %3, %symb.SymbNode** %s
	br label %L.1
L.1:
	%4 = load %symb.SymbNode** %s
	%5 = icmp ne %symb.SymbNode* %4, null
	%6 = xor i1 %5, true
	br i1 %6, label %L.2, label %L.3
L.3:
	%7 = load %symb.SymbNode** %s
	%8 = getelementptr %symb.SymbNode* %7, i32 0, i32 12
	%9 = load i16* %8
	%10 = icmp eq i16 %9, 0
	br i1 %10, label %L.5, label %L.4
L.5:
	%11 = load %symb.SymbNode** %s
	%12 = call i16 @llvmdb_DefEnumConst(%symb.SymbNode* %11)
	%13 = load %symb.SymbNode** %s
	%14 = getelementptr %symb.SymbNode* %13, i32 0, i32 12
	store i16 %12, i16* %14
	br label %L.4
L.4:
	%15 = load %symb.SymbNode** %s
	%16 = getelementptr %symb.SymbNode* %15, i32 0, i32 0
	%17 = load %symb.SymbNode** %16
	%18 = bitcast %symb.SymbNode* %17 to %symb.SymbNode*
	store %symb.SymbNode* %18, %symb.SymbNode** %s
	br label %L.1
L.2:
	%19 = call i16 @llvmdb_PListStart()
	store i16 %19, i16* %list
	store i8 0, i8* %term
	%20 = load %type.TypeNode** %t
	%21 = getelementptr %type.TypeNode* %20, i32 0, i32 4
	%22 = load %symb.SymbNode** %21
	%23 = bitcast %symb.SymbNode* %22 to %symb.SymbNode*
	store %symb.SymbNode* %23, %symb.SymbNode** %s
	br label %L.6
L.6:
	%24 = load %symb.SymbNode** %s
	%25 = icmp ne %symb.SymbNode* %24, null
	%26 = xor i1 %25, true
	br i1 %26, label %L.7, label %L.8
L.8:
	%27 = load %symb.SymbNode** %s
	%28 = getelementptr %symb.SymbNode* %27, i32 0, i32 12
	%29 = load i16* %28
	store i16 %29, i16* %tag
	%30 = load %symb.SymbNode** %s
	%31 = getelementptr %symb.SymbNode* %30, i32 0, i32 0
	%32 = load %symb.SymbNode** %31
	%33 = bitcast %symb.SymbNode* %32 to %symb.SymbNode*
	store %symb.SymbNode* %33, %symb.SymbNode** %s
	%34 = load %symb.SymbNode** %s
	%35 = icmp eq %symb.SymbNode* %34, null
	br i1 %35, label %L.10, label %L.9
L.10:
	store i8 1, i8* %term
	br label %L.9
L.9:
	%36 = load i16* %tag
	%37 = load i8* %term
	call void @llvmdb_PMetaRef(i16 %36, i8 %37)
	br label %L.6
L.7:
	%38 = load i16* @llvmdb_seqno
	%39 = add i16 %38, 1
	store i16 %39, i16* @llvmdb_seqno
	%40 = load i16* @llvmdb_seqno
	store i16 %40, i16* %tage
	%41 = load i16* %tage
	%42 = load %type.TypeNode** %t
	call void @llvmdb_PTypeHeader(i16 %41, i16 4, %type.TypeNode* %42)
	call void @llvmdb_PNull(i8 0)
	%43 = load i16* %list
	call void @llvmdb_PMetaRef(i16 %43, i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	call void @llvmdb_PNull(i8 1)
	%44 = load i16* %tage
	store i16 %44, i16* %rv.0
	br label %return
return:
	%45 = load i16* %rv.0
	ret i16 %45
}
define internal zeroext i16 @llvmdb_DefArrayType(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca i16
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tagb = alloca i16
	%tagi = alloca i16
	%taga = alloca i16
	%tagl = alloca i16
	%0 = load %type.TypeNode** %t
	%1 = getelementptr %type.TypeNode* %0, i32 0, i32 0
	%2 = load %type.TypeNode** %1
	%3 = bitcast %type.TypeNode* %2 to %type.TypeNode*
	%4 = call i16 @llvmdb_DefType(%type.TypeNode* %3)
	store i16 %4, i16* %tagb
	store i16 0, i16* %tagi
	%5 = load %type.TypeNode** %t
	%6 = getelementptr %type.TypeNode* %5, i32 0, i32 25
	%7 = load i8* %6
	%8 = icmp ne i8 %7, 0
	%9 = xor i1 %8, true
	br i1 %9, label %L.2, label %L.1
L.2:
	%10 = load %type.TypeNode** %t
	%11 = getelementptr %type.TypeNode* %10, i32 0, i32 7
	%12 = load i64* %11
	%13 = load %type.TypeNode** %t
	%14 = getelementptr %type.TypeNode* %13, i32 0, i32 8
	%15 = load i64* %14
	%16 = call i16 @llvmdb_DefRange(i64 %12, i64 %15)
	store i16 %16, i16* %tagi
	br label %L.1
L.1:
	%17 = load i16* %tagi
	%18 = icmp ne i16 %17, 0
	br i1 %18, label %L.4, label %L.3
L.4:
	%19 = call i16 @llvmdb_PListStart()
	store i16 %19, i16* %tagl
	%20 = load i16* %tagi
	call void @llvmdb_PMetaRef(i16 %20, i8 1)
	br label %L.3
L.3:
	%21 = load i16* @llvmdb_seqno
	%22 = add i16 %21, 1
	store i16 %22, i16* @llvmdb_seqno
	%23 = load i16* @llvmdb_seqno
	store i16 %23, i16* %taga
	%24 = load i16* %taga
	%25 = load %type.TypeNode** %t
	call void @llvmdb_PTypeHeader(i16 %24, i16 1, %type.TypeNode* %25)
	%26 = load i16* %tagb
	call void @llvmdb_PMetaRef(i16 %26, i8 0)
	%27 = load i16* %tagi
	%28 = icmp eq i16 %27, 0
	br i1 %28, label %L.6, label %L.7
L.6:
	call void @llvmdb_PNull(i8 0)
	br label %L.5
L.7:
	%29 = load i16* %tagl
	call void @llvmdb_PMetaRef(i16 %29, i8 0)
	br label %L.5
L.5:
	call void @llvmdb_P32(i32 0, i8 0)
	call void @llvmdb_PNull(i8 1)
	%30 = load i16* %taga
	store i16 %30, i16* %rv.0
	br label %return
return:
	%31 = load i16* %rv.0
	ret i16 %31
}
define internal zeroext i16 @llvmdb_DefField(%symb.SymbNode* %s$) nounwind {
L.0:
	%rv.0 = alloca i16
	%s = alloca %symb.SymbNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%tagt = alloca i16
	%tagf = alloca i16
	%t = alloca %type.TypeNode*
	%0 = load %symb.SymbNode** %s
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 1
	%2 = load %type.TypeNode** %1
	store %type.TypeNode* %2, %type.TypeNode** %t
	%3 = load %type.TypeNode** %t
	%4 = call i16 @llvmdb_DefType(%type.TypeNode* %3)
	store i16 %4, i16* %tagt
	%5 = load i16* @llvmdb_seqno
	%6 = add i16 %5, 1
	store i16 %6, i16* @llvmdb_seqno
	%7 = load i16* @llvmdb_seqno
	store i16 %7, i16* %tagf
	%8 = load i16* %tagf
	call void @llvmdb_PHeader(i16 %8, i16 13)
	%9 = load i16* @llvmdb_file
	call void @llvmdb_PMetaRef(i16 %9, i8 0)
	%10 = load %symb.SymbNode** %s
	call void @llvmdb_PName(%symb.SymbNode* %10, i8 0)
	%11 = load i16* @llvmdb_file
	call void @llvmdb_PMetaRef(i16 %11, i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	%12 = load %type.TypeNode** %t
	%13 = getelementptr %type.TypeNode* %12, i32 0, i32 10
	%14 = load i32* %13
	%15 = zext i32 %14 to i64
	call void @llvmdb_P64(i64 %15, i8 0)
	%16 = load %type.TypeNode** %t
	%17 = getelementptr %type.TypeNode* %16, i32 0, i32 11
	%18 = load i32* %17
	%19 = zext i32 %18 to i64
	call void @llvmdb_P64(i64 %19, i8 0)
	%20 = load %symb.SymbNode** %s
	%21 = getelementptr %symb.SymbNode* %20, i32 0, i32 10
	%22 = load i16* %21
	%23 = zext i16 %22 to i64
	call void @llvmdb_P64(i64 %23, i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	%24 = load i16* %tagt
	call void @llvmdb_PMetaRef(i16 %24, i8 1)
	%25 = load i16* %tagf
	store i16 %25, i16* %rv.0
	br label %return
return:
	%26 = load i16* %rv.0
	ret i16 %26
}
define internal zeroext i16 @llvmdb_DefRecordType(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca i16
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tag = alloca i16
	%list = alloca i16
	%rec = alloca i16
	%s = alloca %symb.SymbNode*
	%term = alloca i8
	%0 = load i16* @llvmdb_seqno
	%1 = add i16 %0, 1
	store i16 %1, i16* @llvmdb_seqno
	%2 = load i16* @llvmdb_seqno
	store i16 %2, i16* %rec
	%3 = load i16* %rec
	%4 = load %type.TypeNode** %t
	%5 = getelementptr %type.TypeNode* %4, i32 0, i32 12
	store i16 %3, i16* %5
	%6 = load i16* @llvmdb_seqno
	%7 = add i16 %6, 1
	store i16 %7, i16* @llvmdb_seqno
	%8 = load i16* @llvmdb_seqno
	store i16 %8, i16* %list
	%9 = load i16* %rec
	%10 = load %type.TypeNode** %t
	call void @llvmdb_PTypeHeader(i16 %9, i16 19, %type.TypeNode* %10)
	call void @llvmdb_PNull(i8 0)
	%11 = load i16* %list
	call void @llvmdb_PMetaRef(i16 %11, i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	call void @llvmdb_PNull(i8 1)
	%12 = load %type.TypeNode** %t
	%13 = getelementptr %type.TypeNode* %12, i32 0, i32 4
	%14 = load %symb.SymbNode** %13
	%15 = bitcast %symb.SymbNode* %14 to %symb.SymbNode*
	store %symb.SymbNode* %15, %symb.SymbNode** %s
	br label %L.1
L.1:
	%16 = load %symb.SymbNode** %s
	%17 = icmp ne %symb.SymbNode* %16, null
	%18 = xor i1 %17, true
	br i1 %18, label %L.2, label %L.3
L.3:
	%19 = load %symb.SymbNode** %s
	%20 = getelementptr %symb.SymbNode* %19, i32 0, i32 12
	%21 = load i16* %20
	%22 = icmp eq i16 %21, 0
	br i1 %22, label %L.5, label %L.4
L.5:
	%23 = load %symb.SymbNode** %s
	%24 = call i16 @llvmdb_DefField(%symb.SymbNode* %23)
	%25 = load %symb.SymbNode** %s
	%26 = getelementptr %symb.SymbNode* %25, i32 0, i32 12
	store i16 %24, i16* %26
	br label %L.4
L.4:
	%27 = load %symb.SymbNode** %s
	%28 = getelementptr %symb.SymbNode* %27, i32 0, i32 0
	%29 = load %symb.SymbNode** %28
	%30 = bitcast %symb.SymbNode* %29 to %symb.SymbNode*
	store %symb.SymbNode* %30, %symb.SymbNode** %s
	br label %L.1
L.2:
	%31 = load i16* %list
	call void @llvmdb_PMetaSeq(i16 %31)
	store i8 0, i8* %term
	%32 = load %type.TypeNode** %t
	%33 = getelementptr %type.TypeNode* %32, i32 0, i32 4
	%34 = load %symb.SymbNode** %33
	%35 = bitcast %symb.SymbNode* %34 to %symb.SymbNode*
	store %symb.SymbNode* %35, %symb.SymbNode** %s
	br label %L.6
L.6:
	%36 = load %symb.SymbNode** %s
	%37 = icmp ne %symb.SymbNode* %36, null
	%38 = xor i1 %37, true
	br i1 %38, label %L.7, label %L.8
L.8:
	%39 = load %symb.SymbNode** %s
	%40 = getelementptr %symb.SymbNode* %39, i32 0, i32 12
	%41 = load i16* %40
	store i16 %41, i16* %tag
	%42 = load %symb.SymbNode** %s
	%43 = getelementptr %symb.SymbNode* %42, i32 0, i32 0
	%44 = load %symb.SymbNode** %43
	%45 = bitcast %symb.SymbNode* %44 to %symb.SymbNode*
	store %symb.SymbNode* %45, %symb.SymbNode** %s
	%46 = load %symb.SymbNode** %s
	%47 = icmp eq %symb.SymbNode* %46, null
	br i1 %47, label %L.10, label %L.9
L.10:
	store i8 1, i8* %term
	br label %L.9
L.9:
	%48 = load i16* %tag
	%49 = load i8* %term
	call void @llvmdb_PMetaRef(i16 %48, i8 %49)
	br label %L.6
L.7:
	%50 = load i16* %rec
	store i16 %50, i16* %rv.0
	br label %return
return:
	%51 = load i16* %rv.0
	ret i16 %51
}
define internal zeroext i16 @llvmdb_DefType(%type.TypeNode* %t$) nounwind {
L.0:
	%rv.0 = alloca i16
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%tag = alloca i16
	%0 = load %type.TypeNode** %t
	%1 = icmp eq %type.TypeNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	store i16 0, i16* %rv.0
	br label %return
L.1:
	%2 = load %type.TypeNode** %t
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 12
	%4 = load i16* %3
	store i16 %4, i16* %tag
	%5 = load i16* %tag
	%6 = icmp eq i16 %5, 0
	br i1 %6, label %L.4, label %L.3
L.4:
	%7 = load %type.TypeNode** %t
	%8 = getelementptr %type.TypeNode* %7, i32 0, i32 14
	%9 = load i8* %8
	%10 = zext i8 %9 to i32
	switch i32 %10, label %L.5 [
		i32 1, label %L.7
		i32 2, label %L.8
		i32 3, label %L.9
		i32 5, label %L.10
		i32 8, label %L.10
		i32 6, label %L.11
		i32 7, label %L.12
	]
L.7:
	%11 = load %type.TypeNode** %t
	%12 = load %type.TypeNode** @type_booltype
	%13 = icmp eq %type.TypeNode* %11, %12
	br i1 %13, label %L.14, label %L.15
L.14:
	%14 = load %type.TypeNode** %t
	%15 = call i16 @llvmdb_DefBasicType(i8 2, %type.TypeNode* %14)
	store i16 %15, i16* %tag
	br label %L.13
L.15:
	%16 = load %type.TypeNode** %t
	%17 = call i16 @llvmdb_DefEnumerationType(%type.TypeNode* %16)
	store i16 %17, i16* %tag
	br label %L.13
L.13:
	br label %L.6
L.8:
	%18 = load %type.TypeNode** %t
	%19 = load %type.TypeNode** @type_bytetype
	%20 = icmp eq %type.TypeNode* %18, %19
	br i1 %20, label %L.17, label %L.18
L.17:
	%21 = load %type.TypeNode** %t
	%22 = call i16 @llvmdb_DefBasicType(i8 8, %type.TypeNode* %21)
	store i16 %22, i16* %tag
	br label %L.16
L.18:
	%23 = load %type.TypeNode** %t
	%24 = load %type.TypeNode** @type_wordtype
	%25 = icmp eq %type.TypeNode* %23, %24
	br i1 %25, label %L.26, label %L.25
L.25:
	%26 = load %type.TypeNode** %t
	%27 = getelementptr [6 x %type.TypeNode*]* @type_uinttypes, i32 0, i32 0
	%28 = load %type.TypeNode** %27
	%29 = icmp eq %type.TypeNode* %26, %28
	br label %L.26
L.26:
	%30 = phi i1 [ true, %L.18 ], [ %29, %L.25 ]
	br i1 %30, label %L.24, label %L.23
L.23:
	%31 = load %type.TypeNode** %t
	%32 = getelementptr [6 x %type.TypeNode*]* @type_uinttypes, i32 0, i32 1
	%33 = load %type.TypeNode** %32
	%34 = icmp eq %type.TypeNode* %31, %33
	br label %L.24
L.24:
	%35 = phi i1 [ true, %L.26 ], [ %34, %L.23 ]
	br i1 %35, label %L.22, label %L.21
L.21:
	%36 = load %type.TypeNode** %t
	%37 = getelementptr [6 x %type.TypeNode*]* @type_uinttypes, i32 0, i32 2
	%38 = load %type.TypeNode** %37
	%39 = icmp eq %type.TypeNode* %36, %38
	br label %L.22
L.22:
	%40 = phi i1 [ true, %L.24 ], [ %39, %L.21 ]
	br i1 %40, label %L.20, label %L.19
L.19:
	%41 = load %type.TypeNode** %t
	%42 = getelementptr [6 x %type.TypeNode*]* @type_uinttypes, i32 0, i32 3
	%43 = load %type.TypeNode** %42
	%44 = icmp eq %type.TypeNode* %41, %43
	br label %L.20
L.20:
	%45 = phi i1 [ true, %L.22 ], [ %44, %L.19 ]
	br i1 %45, label %L.28, label %L.29
L.28:
	%46 = load %type.TypeNode** %t
	%47 = call i16 @llvmdb_DefBasicType(i8 7, %type.TypeNode* %46)
	store i16 %47, i16* %tag
	br label %L.27
L.29:
	%48 = load %type.TypeNode** %t
	%49 = getelementptr %type.TypeNode* %48, i32 0, i32 7
	%50 = load i64* %49
	%51 = load %type.TypeNode** %t
	%52 = getelementptr %type.TypeNode* %51, i32 0, i32 8
	%53 = load i64* %52
	%54 = call i16 @llvmdb_DefRange(i64 %50, i64 %53)
	store i16 %54, i16* %tag
	br label %L.27
L.27:
	br label %L.16
L.16:
	br label %L.6
L.9:
	%55 = load %type.TypeNode** %t
	%56 = load %type.TypeNode** @type_swordtype
	%57 = icmp eq %type.TypeNode* %55, %56
	br i1 %57, label %L.37, label %L.36
L.36:
	%58 = load %type.TypeNode** %t
	%59 = getelementptr [6 x %type.TypeNode*]* @type_inttypes, i32 0, i32 0
	%60 = load %type.TypeNode** %59
	%61 = icmp eq %type.TypeNode* %58, %60
	br label %L.37
L.37:
	%62 = phi i1 [ true, %L.9 ], [ %61, %L.36 ]
	br i1 %62, label %L.35, label %L.34
L.34:
	%63 = load %type.TypeNode** %t
	%64 = getelementptr [6 x %type.TypeNode*]* @type_inttypes, i32 0, i32 1
	%65 = load %type.TypeNode** %64
	%66 = icmp eq %type.TypeNode* %63, %65
	br label %L.35
L.35:
	%67 = phi i1 [ true, %L.37 ], [ %66, %L.34 ]
	br i1 %67, label %L.33, label %L.32
L.32:
	%68 = load %type.TypeNode** %t
	%69 = getelementptr [6 x %type.TypeNode*]* @type_inttypes, i32 0, i32 2
	%70 = load %type.TypeNode** %69
	%71 = icmp eq %type.TypeNode* %68, %70
	br label %L.33
L.33:
	%72 = phi i1 [ true, %L.35 ], [ %71, %L.32 ]
	br i1 %72, label %L.31, label %L.30
L.30:
	%73 = load %type.TypeNode** %t
	%74 = getelementptr [6 x %type.TypeNode*]* @type_inttypes, i32 0, i32 3
	%75 = load %type.TypeNode** %74
	%76 = icmp eq %type.TypeNode* %73, %75
	br label %L.31
L.31:
	%77 = phi i1 [ true, %L.33 ], [ %76, %L.30 ]
	br i1 %77, label %L.39, label %L.40
L.39:
	%78 = load %type.TypeNode** %t
	%79 = call i16 @llvmdb_DefBasicType(i8 5, %type.TypeNode* %78)
	store i16 %79, i16* %tag
	br label %L.38
L.40:
	%80 = load %type.TypeNode** %t
	%81 = getelementptr %type.TypeNode* %80, i32 0, i32 7
	%82 = load i64* %81
	%83 = load %type.TypeNode** %t
	%84 = getelementptr %type.TypeNode* %83, i32 0, i32 8
	%85 = load i64* %84
	%86 = call i16 @llvmdb_DefRange(i64 %82, i64 %85)
	store i16 %86, i16* %tag
	br label %L.38
L.38:
	br label %L.6
L.10:
	%87 = load %type.TypeNode** %t
	%88 = call i16 @llvmdb_DefRefType(%type.TypeNode* %87)
	store i16 %88, i16* %tag
	br label %L.6
L.11:
	%89 = load %type.TypeNode** %t
	%90 = call i16 @llvmdb_DefArrayType(%type.TypeNode* %89)
	store i16 %90, i16* %tag
	br label %L.6
L.12:
	%91 = load %type.TypeNode** %t
	%92 = call i16 @llvmdb_DefRecordType(%type.TypeNode* %91)
	store i16 %92, i16* %tag
	br label %L.6
L.5:
	br label %L.6
L.6:
	%93 = load i16* %tag
	%94 = load %type.TypeNode** %t
	%95 = getelementptr %type.TypeNode* %94, i32 0, i32 12
	store i16 %93, i16* %95
	br label %L.3
L.3:
	%96 = load i16* %tag
	store i16 %96, i16* %rv.0
	br label %return
return:
	%97 = load i16* %rv.0
	ret i16 %97
}
define internal void @llvmdb_DefLines() nounwind {
L.0:
	%ln = alloca %llvmdb.LineT*
	%0 = load %llvmdb.LineT** @llvmdb_lnhead
	store %llvmdb.LineT* %0, %llvmdb.LineT** %ln
	br label %L.1
L.1:
	%1 = load %llvmdb.LineT** %ln
	%2 = icmp ne %llvmdb.LineT* %1, null
	%3 = xor i1 %2, true
	br i1 %3, label %L.2, label %L.3
L.3:
	%4 = load %llvmdb.LineT** %ln
	%5 = getelementptr %llvmdb.LineT* %4, i32 0, i32 1
	%6 = load i16* %5
	call void @llvmdb_PMetaSeq(i16 %6)
	%7 = load %llvmdb.LineT** %ln
	%8 = getelementptr %llvmdb.LineT* %7, i32 0, i32 2
	%9 = load i16* %8
	%10 = zext i16 %9 to i32
	call void @llvmdb_P32(i32 %10, i8 0)
	call void @llvmdb_P32(i32 1, i8 0)
	%11 = load %llvmdb.LineT** %ln
	%12 = getelementptr %llvmdb.LineT* %11, i32 0, i32 3
	%13 = load i16* %12
	call void @llvmdb_PMetaRef(i16 %13, i8 0)
	call void @llvmdb_PNull(i8 1)
	%14 = load %llvmdb.LineT** %ln
	%15 = getelementptr %llvmdb.LineT* %14, i32 0, i32 0
	%16 = load %llvmdb.LineT** %15
	%17 = bitcast %llvmdb.LineT* %16 to %llvmdb.LineT*
	store %llvmdb.LineT* %17, %llvmdb.LineT** %ln
	br label %L.1
L.2:
	store %llvmdb.LineT* null, %llvmdb.LineT** @llvmdb_lnhead
	store %llvmdb.LineT* null, %llvmdb.LineT** @llvmdb_lntail
	br label %return
return:
	ret void
}
@S.624 = internal constant [8 x i8] c", !dbg \00"
define internal void @llvmdb_PLine(i16 zeroext %lineno$) nounwind {
L.0:
	%lineno = alloca i16
	store i16 %lineno$, i16* %lineno
	%tag = alloca i16
	%ln = alloca %llvmdb.LineT*
	%0 = load %llvmdb.LineT** @llvmdb_lntail
	%1 = icmp ne %llvmdb.LineT* %0, null
	br i1 %1, label %L.1, label %L.2
L.1:
	%2 = load %llvmdb.LineT** @llvmdb_lntail
	%3 = getelementptr %llvmdb.LineT* %2, i32 0, i32 2
	%4 = load i16* %3
	%5 = load i16* %lineno
	%6 = icmp eq i16 %4, %5
	br label %L.2
L.2:
	%7 = phi i1 [ false, %L.0 ], [ %6, %L.1 ]
	br i1 %7, label %L.4, label %L.5
L.4:
	%8 = load %llvmdb.LineT** @llvmdb_lntail
	%9 = getelementptr %llvmdb.LineT* %8, i32 0, i32 1
	%10 = load i16* %9
	store i16 %10, i16* %tag
	br label %L.3
L.5:
	%11 = load i16* @llvmdb_seqno
	%12 = add i16 %11, 1
	store i16 %12, i16* @llvmdb_seqno
	%13 = load i16* @llvmdb_seqno
	store i16 %13, i16* %tag
	%14 = call [0 x i8]* @sys_zalloc(i32 12)
	%15 = bitcast [0 x i8]* %14 to %llvmdb.LineT*
	store %llvmdb.LineT* %15, %llvmdb.LineT** %ln
	%16 = load i16* %tag
	%17 = load %llvmdb.LineT** %ln
	%18 = getelementptr %llvmdb.LineT* %17, i32 0, i32 1
	store i16 %16, i16* %18
	%19 = load i16* %lineno
	%20 = load %llvmdb.LineT** %ln
	%21 = getelementptr %llvmdb.LineT* %20, i32 0, i32 2
	store i16 %19, i16* %21
	%22 = call i16 @llvmdb_GetLineContext()
	%23 = load %llvmdb.LineT** %ln
	%24 = getelementptr %llvmdb.LineT* %23, i32 0, i32 3
	store i16 %22, i16* %24
	%25 = load %llvmdb.LineT** @llvmdb_lntail
	%26 = icmp eq %llvmdb.LineT* %25, null
	br i1 %26, label %L.7, label %L.8
L.7:
	%27 = load %llvmdb.LineT** %ln
	store %llvmdb.LineT* %27, %llvmdb.LineT** @llvmdb_lnhead
	br label %L.6
L.8:
	%28 = load %llvmdb.LineT** %ln
	%29 = bitcast %llvmdb.LineT* %28 to %llvmdb.LineT*
	%30 = load %llvmdb.LineT** @llvmdb_lntail
	%31 = getelementptr %llvmdb.LineT* %30, i32 0, i32 0
	store %llvmdb.LineT* %29, %llvmdb.LineT** %31
	br label %L.6
L.6:
	%32 = load %llvmdb.LineT** %ln
	store %llvmdb.LineT* %32, %llvmdb.LineT** @llvmdb_lntail
	br label %L.3
L.3:
	%33 = load %bout.BufIO** @llvm_f
	%34 = bitcast %bout.BufIO* %33 to %bout.BufIO*
	%35 = getelementptr [8 x i8]* @S.624
	%36 = bitcast [8 x i8]* %35 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %34, [0 x i8]* %36)
	%37 = load i16* %tag
	call void @llvmdb_PSeq(i16 %37)
	br label %return
return:
	ret void
}
@S.625 = internal constant [41 x i8] c"\09call void @llvm.dbg.declare(metadata !{\00"
@S.626 = internal constant [3 x i8] c"* \00"
@S.627 = internal constant [4 x i8] c"}, \00"
@S.628 = internal constant [11 x i8] c"metadata !\00"
@S.629 = internal constant [3 x i8] c"* \00"
define internal zeroext i16 @llvmdb_DefVar(%symb.SymbNode* %s$) nounwind {
L.0:
	%rv.0 = alloca i16
	%s = alloca %symb.SymbNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%tag = alloca i16
	%0 = load i16* @llvmdb_seqno
	%1 = add i16 %0, 1
	store i16 %1, i16* @llvmdb_seqno
	%2 = load i16* @llvmdb_seqno
	%3 = load %symb.SymbNode** %s
	%4 = getelementptr %symb.SymbNode* %3, i32 0, i32 12
	store i16 %2, i16* %4
	%5 = load %symb.SymbNode** %s
	%6 = getelementptr %symb.SymbNode* %5, i32 0, i32 14
	%7 = load i8* %6
	%8 = zext i8 %7 to i32
	switch i32 %8, label %L.1 [
		i32 1, label %L.3
		i32 0, label %L.3
	]
L.3:
	%9 = load %bout.BufIO** @llvm_f
	%10 = bitcast %bout.BufIO* %9 to %bout.BufIO*
	%11 = getelementptr [41 x i8]* @S.625
	%12 = bitcast [41 x i8]* %11 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %10, [0 x i8]* %12)
	%13 = load %symb.SymbNode** %s
	%14 = getelementptr %symb.SymbNode* %13, i32 0, i32 1
	%15 = load %type.TypeNode** %14
	call void @llvm_PType(%type.TypeNode* %15)
	%16 = load %bout.BufIO** @llvm_f
	%17 = bitcast %bout.BufIO* %16 to %bout.BufIO*
	%18 = getelementptr [3 x i8]* @S.626
	%19 = bitcast [3 x i8]* %18 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %17, [0 x i8]* %19)
	%20 = load %symb.SymbNode** %s
	call void @llvm_PName(%symb.SymbNode* %20)
	%21 = load %bout.BufIO** @llvm_f
	%22 = bitcast %bout.BufIO* %21 to %bout.BufIO*
	%23 = getelementptr [4 x i8]* @S.627
	%24 = bitcast [4 x i8]* %23 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %22, [0 x i8]* %24)
	%25 = load %bout.BufIO** @llvm_f
	%26 = bitcast %bout.BufIO* %25 to %bout.BufIO*
	%27 = getelementptr [11 x i8]* @S.628
	%28 = bitcast [11 x i8]* %27 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %26, [0 x i8]* %28)
	%29 = load %bout.BufIO** @llvm_f
	%30 = bitcast %bout.BufIO* %29 to %bout.BufIO*
	%31 = load i16* @llvmdb_seqno
	%32 = zext i16 %31 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %30, i32 %32)
	%33 = load %bout.BufIO** @llvm_f
	%34 = bitcast %bout.BufIO* %33 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %34, i8 41)
	%35 = load %symb.SymbNode** %s
	%36 = getelementptr %symb.SymbNode* %35, i32 0, i32 11
	%37 = load i16* %36
	call void @llvmdb_PLine(i16 %37)
	%38 = load %bout.BufIO** @llvm_f
	%39 = bitcast %bout.BufIO* %38 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %39)
	%40 = load %symb.SymbNode** %s
	%41 = getelementptr %symb.SymbNode* %40, i32 0, i32 14
	%42 = load i8* %41
	%43 = icmp ne i8 %42, 0
	br i1 %43, label %L.5, label %L.4
L.5:
	%44 = load %symb.SymbNode** %s
	%45 = getelementptr %symb.SymbNode* %44, i32 0, i32 0
	store %symb.SymbNode* null, %symb.SymbNode** %45
	%46 = load %symb.SymbNode** @llvmdb_lvtail
	%47 = icmp eq %symb.SymbNode* %46, null
	br i1 %47, label %L.7, label %L.8
L.7:
	%48 = load %symb.SymbNode** %s
	store %symb.SymbNode* %48, %symb.SymbNode** @llvmdb_lvhead
	br label %L.6
L.8:
	%49 = load %symb.SymbNode** %s
	%50 = bitcast %symb.SymbNode* %49 to %symb.SymbNode*
	%51 = load %symb.SymbNode** @llvmdb_lvtail
	%52 = getelementptr %symb.SymbNode* %51, i32 0, i32 0
	store %symb.SymbNode* %50, %symb.SymbNode** %52
	br label %L.6
L.6:
	%53 = load %symb.SymbNode** %s
	store %symb.SymbNode* %53, %symb.SymbNode** @llvmdb_lvtail
	br label %L.4
L.4:
	br label %L.2
L.1:
	%54 = load %symb.SymbNode** %s
	%55 = getelementptr %symb.SymbNode* %54, i32 0, i32 1
	%56 = load %type.TypeNode** %55
	%57 = call i16 @llvmdb_DefType(%type.TypeNode* %56)
	store i16 %57, i16* %tag
	%58 = load %symb.SymbNode** %s
	%59 = getelementptr %symb.SymbNode* %58, i32 0, i32 12
	%60 = load i16* %59
	call void @llvmdb_PHeader(i16 %60, i16 52)
	call void @llvmdb_P32(i32 0, i8 0)
	call void @llvmdb_PNull(i8 0)
	%61 = load %symb.SymbNode** %s
	call void @llvmdb_PFullName(%symb.SymbNode* %61, i8 0)
	%62 = load %symb.SymbNode** %s
	call void @llvmdb_PFullName(%symb.SymbNode* %62, i8 0)
	call void @llvmdb_PString([0 x i8]* null, i8 0)
	%63 = load i16* @llvmdb_file
	call void @llvmdb_PMetaRef(i16 %63, i8 0)
	%64 = load %symb.SymbNode** %s
	%65 = getelementptr %symb.SymbNode* %64, i32 0, i32 11
	%66 = load i16* %65
	%67 = zext i16 %66 to i32
	call void @llvmdb_P32(i32 %67, i8 0)
	%68 = load i16* %tag
	call void @llvmdb_PMetaRef(i16 %68, i8 0)
	%69 = load %symb.SymbNode** %s
	%70 = getelementptr %symb.SymbNode* %69, i32 0, i32 14
	%71 = load i8* %70
	%72 = icmp eq i8 %71, 2
	%73 = zext i1 %72 to i32
	call void @llvmdb_P32(i32 %73, i8 0)
	%74 = load %symb.SymbNode** %s
	%75 = getelementptr %symb.SymbNode* %74, i32 0, i32 14
	%76 = load i8* %75
	%77 = icmp ne i8 %76, 5
	%78 = zext i1 %77 to i32
	call void @llvmdb_P32(i32 %78, i8 0)
	%79 = load %symb.SymbNode** %s
	%80 = getelementptr %symb.SymbNode* %79, i32 0, i32 1
	%81 = load %type.TypeNode** %80
	call void @llvm_PType(%type.TypeNode* %81)
	%82 = load %bout.BufIO** @llvm_f
	%83 = bitcast %bout.BufIO* %82 to %bout.BufIO*
	%84 = getelementptr [3 x i8]* @S.629
	%85 = bitcast [3 x i8]* %84 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %83, [0 x i8]* %85)
	%86 = load %symb.SymbNode** %s
	call void @llvm_PName(%symb.SymbNode* %86)
	call void @llvmdb_PTerminator(i8 1)
	%87 = load %symb.SymbNode** %s
	%88 = getelementptr %symb.SymbNode* %87, i32 0, i32 0
	store %symb.SymbNode* null, %symb.SymbNode** %88
	%89 = load %symb.SymbNode** @llvmdb_gvtail
	%90 = icmp eq %symb.SymbNode* %89, null
	br i1 %90, label %L.10, label %L.11
L.10:
	%91 = load %symb.SymbNode** %s
	store %symb.SymbNode* %91, %symb.SymbNode** @llvmdb_gvhead
	%92 = load %symb.SymbNode** %s
	store %symb.SymbNode* %92, %symb.SymbNode** @llvmdb_gvtail
	br label %L.9
L.11:
	%93 = load %symb.SymbNode** %s
	%94 = bitcast %symb.SymbNode* %93 to %symb.SymbNode*
	%95 = load %symb.SymbNode** @llvmdb_gvtail
	%96 = getelementptr %symb.SymbNode* %95, i32 0, i32 0
	store %symb.SymbNode* %94, %symb.SymbNode** %96
	%97 = load %symb.SymbNode** %s
	store %symb.SymbNode* %97, %symb.SymbNode** @llvmdb_gvtail
	br label %L.9
L.9:
	br label %L.2
L.2:
	%98 = load i16* @llvmdb_seqno
	store i16 %98, i16* %rv.0
	br label %return
return:
	%99 = load i16* %rv.0
	ret i16 %99
}
define internal void @llvmdb_DefSubroutine(i16 zeroext %stag$, %symb.SymbNode* %ps$) nounwind {
L.0:
	%stag = alloca i16
	%ps = alloca %symb.SymbNode*
	store i16 %stag$, i16* %stag
	store %symb.SymbNode* %ps$, %symb.SymbNode** %ps
	%tag = alloca i16
	%list = alloca i16
	%s = alloca %symb.SymbNode*
	%tl = alloca %type.TypeListEntry*
	%term = alloca i8
	%0 = load %symb.SymbNode** %ps
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 4
	%2 = load %type.TypeListEntry** %1
	store %type.TypeListEntry* %2, %type.TypeListEntry** %tl
	br label %L.1
L.1:
	%3 = load %type.TypeListEntry** %tl
	%4 = icmp ne %type.TypeListEntry* %3, null
	%5 = xor i1 %4, true
	br i1 %5, label %L.2, label %L.3
L.3:
	%6 = load %type.TypeListEntry** %tl
	%7 = getelementptr %type.TypeListEntry* %6, i32 0, i32 1
	%8 = load %type.TypeNode** %7
	%9 = bitcast %type.TypeNode* %8 to %type.TypeNode*
	%10 = call i16 @llvmdb_DefType(%type.TypeNode* %9)
	%11 = load %type.TypeListEntry** %tl
	%12 = getelementptr %type.TypeListEntry* %11, i32 0, i32 0
	%13 = load %type.TypeListEntry** %12
	%14 = bitcast %type.TypeListEntry* %13 to %type.TypeListEntry*
	store %type.TypeListEntry* %14, %type.TypeListEntry** %tl
	br label %L.1
L.2:
	%15 = load %symb.SymbNode** %ps
	%16 = getelementptr %symb.SymbNode* %15, i32 0, i32 3
	%17 = load %symb.SymbNode** %16
	%18 = bitcast %symb.SymbNode* %17 to %symb.SymbNode*
	store %symb.SymbNode* %18, %symb.SymbNode** %s
	br label %L.4
L.4:
	%19 = load %symb.SymbNode** %s
	%20 = icmp ne %symb.SymbNode* %19, null
	%21 = xor i1 %20, true
	br i1 %21, label %L.5, label %L.6
L.6:
	%22 = load %symb.SymbNode** %s
	%23 = getelementptr %symb.SymbNode* %22, i32 0, i32 1
	%24 = load %type.TypeNode** %23
	%25 = call i16 @llvmdb_DefType(%type.TypeNode* %24)
	%26 = load %symb.SymbNode** %s
	%27 = getelementptr %symb.SymbNode* %26, i32 0, i32 0
	%28 = load %symb.SymbNode** %27
	%29 = bitcast %symb.SymbNode* %28 to %symb.SymbNode*
	store %symb.SymbNode* %29, %symb.SymbNode** %s
	br label %L.4
L.5:
	%30 = call i16 @llvmdb_PListStart()
	store i16 %30, i16* %list
	%31 = load %symb.SymbNode** %ps
	%32 = getelementptr %symb.SymbNode* %31, i32 0, i32 4
	%33 = load %type.TypeListEntry** %32
	store %type.TypeListEntry* %33, %type.TypeListEntry** %tl
	%34 = load %symb.SymbNode** %ps
	%35 = getelementptr %symb.SymbNode* %34, i32 0, i32 3
	%36 = load %symb.SymbNode** %35
	%37 = bitcast %symb.SymbNode* %36 to %symb.SymbNode*
	store %symb.SymbNode* %37, %symb.SymbNode** %s
	store i8 0, i8* %term
	%38 = load %type.TypeListEntry** %tl
	%39 = icmp eq %type.TypeListEntry* %38, null
	br i1 %39, label %L.8, label %L.9
L.8:
	%40 = load %symb.SymbNode** %s
	%41 = icmp eq %symb.SymbNode* %40, null
	br i1 %41, label %L.11, label %L.10
L.11:
	store i8 1, i8* %term
	br label %L.10
L.10:
	%42 = load i8* %term
	call void @llvmdb_PNull(i8 %42)
	br label %L.7
L.9:
	br label %L.12
L.12:
	%43 = load %type.TypeListEntry** %tl
	%44 = icmp ne %type.TypeListEntry* %43, null
	%45 = xor i1 %44, true
	br i1 %45, label %L.13, label %L.14
L.14:
	%46 = load %type.TypeListEntry** %tl
	%47 = getelementptr %type.TypeListEntry* %46, i32 0, i32 1
	%48 = load %type.TypeNode** %47
	%49 = getelementptr %type.TypeNode* %48, i32 0, i32 12
	%50 = load i16* %49
	store i16 %50, i16* %tag
	%51 = load %type.TypeListEntry** %tl
	%52 = getelementptr %type.TypeListEntry* %51, i32 0, i32 0
	%53 = load %type.TypeListEntry** %52
	%54 = bitcast %type.TypeListEntry* %53 to %type.TypeListEntry*
	store %type.TypeListEntry* %54, %type.TypeListEntry** %tl
	%55 = load %type.TypeListEntry** %tl
	%56 = icmp eq %type.TypeListEntry* %55, null
	br i1 %56, label %L.15, label %L.16
L.15:
	%57 = load %symb.SymbNode** %s
	%58 = icmp eq %symb.SymbNode* %57, null
	br label %L.16
L.16:
	%59 = phi i1 [ false, %L.14 ], [ %58, %L.15 ]
	br i1 %59, label %L.18, label %L.17
L.18:
	store i8 1, i8* %term
	br label %L.17
L.17:
	%60 = load i16* %tag
	%61 = load i8* %term
	call void @llvmdb_PMetaRef(i16 %60, i8 %61)
	br label %L.12
L.13:
	br label %L.7
L.7:
	store i8 0, i8* %term
	br label %L.19
L.19:
	%62 = load %symb.SymbNode** %s
	%63 = icmp ne %symb.SymbNode* %62, null
	%64 = xor i1 %63, true
	br i1 %64, label %L.20, label %L.21
L.21:
	%65 = load %symb.SymbNode** %s
	%66 = getelementptr %symb.SymbNode* %65, i32 0, i32 1
	%67 = load %type.TypeNode** %66
	%68 = getelementptr %type.TypeNode* %67, i32 0, i32 12
	%69 = load i16* %68
	store i16 %69, i16* %tag
	%70 = load %symb.SymbNode** %s
	%71 = getelementptr %symb.SymbNode* %70, i32 0, i32 0
	%72 = load %symb.SymbNode** %71
	%73 = bitcast %symb.SymbNode* %72 to %symb.SymbNode*
	store %symb.SymbNode* %73, %symb.SymbNode** %s
	%74 = load %symb.SymbNode** %s
	%75 = icmp eq %symb.SymbNode* %74, null
	br i1 %75, label %L.23, label %L.22
L.23:
	store i8 1, i8* %term
	br label %L.22
L.22:
	%76 = load i16* %tag
	%77 = load i8* %term
	call void @llvmdb_PMetaRef(i16 %76, i8 %77)
	br label %L.19
L.20:
	%78 = load i16* %stag
	call void @llvmdb_PHeader(i16 %78, i16 21)
	call void @llvmdb_P32(i32 0, i8 0)
	call void @llvmdb_PString([0 x i8]* null, i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	call void @llvmdb_P64(i64 0, i8 0)
	call void @llvmdb_P64(i64 0, i8 0)
	call void @llvmdb_P64(i64 0, i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	call void @llvmdb_PNull(i8 0)
	%79 = load i16* %list
	call void @llvmdb_PMetaRef(i16 %79, i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	call void @llvmdb_P32(i32 0, i8 1)
	br label %return
return:
	ret void
}
define internal void @llvmdb_ProcStart(%symb.SymbNode* %ps$) nounwind {
L.0:
	%ps = alloca %symb.SymbNode*
	store %symb.SymbNode* %ps$, %symb.SymbNode** %ps
	%0 = load i16* @llvmdb_seqno
	%1 = add i16 %0, 1
	store i16 %1, i16* @llvmdb_seqno
	%2 = load i16* @llvmdb_seqno
	store i16 %2, i16* @llvmdb_subr
	%3 = load i16* @llvmdb_seqno
	%4 = add i16 %3, 1
	store i16 %4, i16* @llvmdb_seqno
	%5 = load i16* @llvmdb_seqno
	store i16 %5, i16* @llvmdb_blok
	br label %return
return:
	ret void
}
@S.630 = internal constant [3 x i8] c" (\00"
@S.631 = internal constant [3 x i8] c", \00"
@S.632 = internal constant [4 x i8] c")* \00"
define internal void @llvmdb_ProcFinish(%symb.SymbNode* %ps$) nounwind {
L.0:
	%ps = alloca %symb.SymbNode*
	store %symb.SymbNode* %ps$, %symb.SymbNode** %ps
	%s = alloca %symb.SymbNode*
	%stype = alloca i16
	%stag = alloca i16
	%ttag = alloca i16
	%fvars = alloca i16
	%empty = alloca i16
	%argno = alloca i32
	%0 = load i16* @llvmdb_seqno
	%1 = add i16 %0, 1
	store i16 %1, i16* @llvmdb_seqno
	%2 = load i16* @llvmdb_seqno
	store i16 %2, i16* %stype
	%3 = load i16* @llvmdb_subr
	call void @llvmdb_PHeader(i16 %3, i16 46)
	call void @llvmdb_P32(i32 0, i8 0)
	call void @llvmdb_PContext(i8 0)
	%4 = load %symb.SymbNode** %ps
	call void @llvmdb_PFullName(%symb.SymbNode* %4, i8 0)
	%5 = load %symb.SymbNode** %ps
	call void @llvmdb_PFullName(%symb.SymbNode* %5, i8 0)
	call void @llvmdb_PString([0 x i8]* null, i8 0)
	%6 = load i16* @llvmdb_file
	call void @llvmdb_PMetaRef(i16 %6, i8 0)
	%7 = load %symb.SymbNode** %ps
	%8 = getelementptr %symb.SymbNode* %7, i32 0, i32 11
	%9 = load i16* %8
	%10 = zext i16 %9 to i32
	call void @llvmdb_P32(i32 %10, i8 0)
	%11 = load i16* %stype
	call void @llvmdb_PMetaRef(i16 %11, i8 0)
	call void @llvmdb_PBoolean(i8 0, i8 0)
	%12 = load %symb.SymbNode** %ps
	%13 = getelementptr %symb.SymbNode* %12, i32 0, i32 14
	%14 = load i8* %13
	%15 = icmp ne i8 %14, 5
	%16 = zext i1 %15 to i8
	call void @llvmdb_PBoolean(i8 %16, i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	call void @llvmdb_PNull(i8 0)
	call void @llvmdb_P32(i32 256, i8 0)
	call void @llvmdb_PBoolean(i8 0, i8 0)
	%17 = load %symb.SymbNode** %ps
	%18 = getelementptr %symb.SymbNode* %17, i32 0, i32 4
	%19 = load %type.TypeListEntry** %18
	call void @llvm_PRetvType(%type.TypeListEntry* %19, i8 0)
	%20 = load %bout.BufIO** @llvm_f
	%21 = bitcast %bout.BufIO* %20 to %bout.BufIO*
	%22 = getelementptr [3 x i8]* @S.630
	%23 = bitcast [3 x i8]* %22 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %21, [0 x i8]* %23)
	%24 = load %symb.SymbNode** %ps
	%25 = getelementptr %symb.SymbNode* %24, i32 0, i32 3
	%26 = load %symb.SymbNode** %25
	%27 = bitcast %symb.SymbNode* %26 to %symb.SymbNode*
	store %symb.SymbNode* %27, %symb.SymbNode** %s
	br label %L.1
L.1:
	%28 = load %symb.SymbNode** %s
	%29 = icmp ne %symb.SymbNode* %28, null
	%30 = xor i1 %29, true
	br i1 %30, label %L.2, label %L.3
L.3:
	%31 = load %symb.SymbNode** %s
	%32 = getelementptr %symb.SymbNode* %31, i32 0, i32 1
	%33 = load %type.TypeNode** %32
	call void @llvm_PType(%type.TypeNode* %33)
	%34 = load %symb.SymbNode** %s
	%35 = getelementptr %symb.SymbNode* %34, i32 0, i32 0
	%36 = load %symb.SymbNode** %35
	%37 = bitcast %symb.SymbNode* %36 to %symb.SymbNode*
	store %symb.SymbNode* %37, %symb.SymbNode** %s
	%38 = load %symb.SymbNode** %s
	%39 = icmp ne %symb.SymbNode* %38, null
	br i1 %39, label %L.5, label %L.4
L.5:
	%40 = load %bout.BufIO** @llvm_f
	%41 = bitcast %bout.BufIO* %40 to %bout.BufIO*
	%42 = getelementptr [3 x i8]* @S.631
	%43 = bitcast [3 x i8]* %42 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %41, [0 x i8]* %43)
	br label %L.4
L.4:
	br label %L.1
L.2:
	%44 = load %bout.BufIO** @llvm_f
	%45 = bitcast %bout.BufIO* %44 to %bout.BufIO*
	%46 = getelementptr [4 x i8]* @S.632
	%47 = bitcast [4 x i8]* %46 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %45, [0 x i8]* %47)
	%48 = load %symb.SymbNode** %ps
	call void @llvm_PName(%symb.SymbNode* %48)
	call void @llvmdb_PTerminator(i8 0)
	call void @llvmdb_PNull(i8 0)
	call void @llvmdb_PNull(i8 0)
	%49 = load i16* @llvmdb_seqno
	%50 = add i16 %49, 1
	store i16 %50, i16* @llvmdb_seqno
	%51 = load i16* @llvmdb_seqno
	store i16 %51, i16* %fvars
	%52 = load i16* %fvars
	call void @llvmdb_PMetaRef(i16 %52, i8 0)
	%53 = load %symb.SymbNode** %ps
	%54 = getelementptr %symb.SymbNode* %53, i32 0, i32 11
	%55 = load i16* %54
	%56 = zext i16 %55 to i32
	%57 = add i32 %56, 1
	call void @llvmdb_P32(i32 %57, i8 1)
	%58 = call i16 @llvmdb_PEmptyList()
	store i16 %58, i16* %empty
	%59 = load i16* %fvars
	call void @llvmdb_PMetaSeq(i16 %59)
	%60 = load i16* %empty
	call void @llvmdb_PMetaRef(i16 %60, i8 1)
	%61 = load i16* @llvmdb_subr
	%62 = load %symb.SymbNode** %ps
	%63 = getelementptr %symb.SymbNode* %62, i32 0, i32 12
	store i16 %61, i16* %63
	%64 = load %symb.SymbNode** %ps
	%65 = getelementptr %symb.SymbNode* %64, i32 0, i32 0
	store %symb.SymbNode* null, %symb.SymbNode** %65
	%66 = load %symb.SymbNode** @llvmdb_sptail
	%67 = icmp eq %symb.SymbNode* %66, null
	br i1 %67, label %L.7, label %L.8
L.7:
	%68 = load %symb.SymbNode** %ps
	store %symb.SymbNode* %68, %symb.SymbNode** @llvmdb_sphead
	br label %L.6
L.8:
	%69 = load %symb.SymbNode** %ps
	%70 = bitcast %symb.SymbNode* %69 to %symb.SymbNode*
	%71 = load %symb.SymbNode** @llvmdb_sptail
	%72 = getelementptr %symb.SymbNode* %71, i32 0, i32 0
	store %symb.SymbNode* %70, %symb.SymbNode** %72
	br label %L.6
L.6:
	%73 = load %symb.SymbNode** %ps
	store %symb.SymbNode* %73, %symb.SymbNode** @llvmdb_sptail
	%74 = load %symb.SymbNode** %ps
	%75 = call i32 @llvmdb_DefFormals(%symb.SymbNode* %74)
	%76 = load %symb.SymbNode** %ps
	%77 = call i16 @llvmdb_DefRetvs(%symb.SymbNode* %76)
	%78 = load i16* %stype
	%79 = load %symb.SymbNode** %ps
	call void @llvmdb_DefSubroutine(i16 %78, %symb.SymbNode* %79)
	store i32 0, i32* %argno
	%80 = load %symb.SymbNode** %ps
	%81 = getelementptr %symb.SymbNode* %80, i32 0, i32 3
	%82 = load %symb.SymbNode** %81
	%83 = bitcast %symb.SymbNode* %82 to %symb.SymbNode*
	store %symb.SymbNode* %83, %symb.SymbNode** %s
	br label %L.9
L.9:
	%84 = load %symb.SymbNode** %s
	%85 = icmp ne %symb.SymbNode* %84, null
	%86 = xor i1 %85, true
	br i1 %86, label %L.10, label %L.11
L.11:
	%87 = load i32* %argno
	%88 = add i32 %87, 1
	store i32 %88, i32* %argno
	%89 = load %symb.SymbNode** %s
	%90 = getelementptr %symb.SymbNode* %89, i32 0, i32 1
	%91 = load %type.TypeNode** %90
	%92 = call i16 @llvmdb_DefType(%type.TypeNode* %91)
	store i16 %92, i16* %ttag
	%93 = load %symb.SymbNode** %s
	%94 = getelementptr %symb.SymbNode* %93, i32 0, i32 12
	%95 = load i16* %94
	store i16 %95, i16* %stag
	%96 = load i16* %stag
	%97 = icmp eq i16 %96, 0
	br i1 %97, label %L.13, label %L.12
L.13:
	%98 = load i16* @llvmdb_seqno
	%99 = add i16 %98, 1
	store i16 %99, i16* @llvmdb_seqno
	%100 = load i16* @llvmdb_seqno
	store i16 %100, i16* %stag
	br label %L.12
L.12:
	%101 = load i16* %stag
	call void @llvmdb_PHeader(i16 %101, i16 257)
	%102 = load i16* @llvmdb_subr
	call void @llvmdb_PMetaRef(i16 %102, i8 0)
	%103 = load %symb.SymbNode** %s
	call void @llvmdb_PName(%symb.SymbNode* %103, i8 0)
	%104 = load i16* @llvmdb_file
	call void @llvmdb_PMetaRef(i16 %104, i8 0)
	%105 = load %symb.SymbNode** %s
	%106 = getelementptr %symb.SymbNode* %105, i32 0, i32 11
	%107 = load i16* %106
	%108 = zext i16 %107 to i32
	%109 = load i32* %argno
	%110 = shl i32 %109, 24
	%111 = or i32 %108, %110
	call void @llvmdb_P32(i32 %111, i8 0)
	%112 = load i16* %ttag
	call void @llvmdb_PMetaRef(i16 %112, i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	call void @llvmdb_P32(i32 0, i8 1)
	%113 = load %symb.SymbNode** %s
	%114 = getelementptr %symb.SymbNode* %113, i32 0, i32 0
	%115 = load %symb.SymbNode** %114
	%116 = bitcast %symb.SymbNode* %115 to %symb.SymbNode*
	store %symb.SymbNode* %116, %symb.SymbNode** %s
	br label %L.9
L.10:
	%117 = load i16* @llvmdb_blok
	call void @llvmdb_PHeader(i16 %117, i16 11)
	%118 = load i16* @llvmdb_subr
	call void @llvmdb_PMetaRef(i16 %118, i8 0)
	%119 = load %symb.SymbNode** %ps
	%120 = getelementptr %symb.SymbNode* %119, i32 0, i32 11
	%121 = load i16* %120
	%122 = zext i16 %121 to i32
	call void @llvmdb_P32(i32 %122, i8 0)
	call void @llvmdb_P32(i32 1, i8 0)
	%123 = load i16* @llvmdb_file
	call void @llvmdb_PMetaRef(i16 %123, i8 0)
	%124 = load i32* @llvmdb_lexblkno
	call void @llvmdb_P32(i32 %124, i8 1)
	%125 = load i32* @llvmdb_lexblkno
	%126 = add i32 %125, 1
	store i32 %126, i32* @llvmdb_lexblkno
	%127 = load %symb.SymbNode** @llvmdb_lvhead
	store %symb.SymbNode* %127, %symb.SymbNode** %s
	br label %L.14
L.14:
	%128 = load %symb.SymbNode** %s
	%129 = icmp ne %symb.SymbNode* %128, null
	%130 = xor i1 %129, true
	br i1 %130, label %L.15, label %L.16
L.16:
	%131 = load %symb.SymbNode** %s
	%132 = getelementptr %symb.SymbNode* %131, i32 0, i32 1
	%133 = load %type.TypeNode** %132
	%134 = call i16 @llvmdb_DefType(%type.TypeNode* %133)
	store i16 %134, i16* %ttag
	%135 = load %symb.SymbNode** %s
	%136 = getelementptr %symb.SymbNode* %135, i32 0, i32 12
	%137 = load i16* %136
	store i16 %137, i16* %stag
	%138 = load i16* %stag
	call void @llvmdb_PHeader(i16 %138, i16 256)
	%139 = load i16* @llvmdb_blok
	call void @llvmdb_PMetaRef(i16 %139, i8 0)
	%140 = load %symb.SymbNode** %s
	call void @llvmdb_PName(%symb.SymbNode* %140, i8 0)
	%141 = load i16* @llvmdb_file
	call void @llvmdb_PMetaRef(i16 %141, i8 0)
	%142 = load %symb.SymbNode** %s
	%143 = getelementptr %symb.SymbNode* %142, i32 0, i32 11
	%144 = load i16* %143
	%145 = zext i16 %144 to i32
	call void @llvmdb_P32(i32 %145, i8 0)
	%146 = load i16* %ttag
	call void @llvmdb_PMetaRef(i16 %146, i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	call void @llvmdb_P32(i32 0, i8 1)
	%147 = load %symb.SymbNode** %s
	%148 = getelementptr %symb.SymbNode* %147, i32 0, i32 0
	%149 = load %symb.SymbNode** %148
	%150 = bitcast %symb.SymbNode* %149 to %symb.SymbNode*
	store %symb.SymbNode* %150, %symb.SymbNode** %s
	br label %L.14
L.15:
	call void @llvmdb_DefLines()
	store %symb.SymbNode* null, %symb.SymbNode** @llvmdb_lvhead
	store %symb.SymbNode* null, %symb.SymbNode** @llvmdb_lvtail
	store i16 0, i16* @llvmdb_subr
	store i16 0, i16* @llvmdb_blok
	br label %return
return:
	ret void
}
define internal void @llvmdb_PackageStart([0 x i8]* %name$) nounwind {
L.0:
	%name = alloca [0 x i8]*
	store [0 x i8]* %name$, [0 x i8]** %name
	br label %return
return:
	ret void
}
define internal void @llvmdb_PackageEnd() nounwind {
L.0:
	br label %return
return:
	ret void
}
@S.633 = internal constant [1 x i8] c"\00"
define internal void @llvmdb_FileStart(%symb.SymbNode* %fs$) nounwind {
L.0:
	%fs = alloca %symb.SymbNode*
	store %symb.SymbNode* %fs$, %symb.SymbNode** %fs
	%i = alloca i32
	%name = alloca [0 x i8]*
	%0 = load %symb.SymbNode** %fs
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 22
	%2 = getelementptr [0 x i8]* %1
	%3 = bitcast [0 x i8]* %2 to [0 x i8]*
	store [0 x i8]* %3, [0 x i8]** %name
	%4 = load i16* @llvmdb_seqno
	%5 = add i16 %4, 1
	store i16 %5, i16* @llvmdb_seqno
	%6 = load i16* @llvmdb_seqno
	store i16 %6, i16* @llvmdb_file
	%7 = load i16* @llvmdb_file
	%8 = load %symb.SymbNode** %fs
	%9 = getelementptr %symb.SymbNode* %8, i32 0, i32 12
	store i16 %7, i16* %9
	%10 = load i16* @llvmdb_file
	call void @llvmdb_PHeader(i16 %10, i16 41)
	%11 = load [0 x i8]** %name
	%12 = bitcast [0 x i8]* %11 to [0 x i8]*
	%13 = call i32 @zstr_rfind([0 x i8]* %12, i8 47, i32 1024)
	store i32 %13, i32* %i
	%14 = load i32* %i
	%15 = icmp eq i32 %14, 1024
	br i1 %15, label %L.2, label %L.3
L.2:
	%16 = load [0 x i8]** %name
	%17 = bitcast [0 x i8]* %16 to [0 x i8]*
	call void @llvmdb_PString([0 x i8]* %17, i8 0)
	%18 = getelementptr [1 x i8]* @S.633
	%19 = bitcast [1 x i8]* %18 to [0 x i8]*
	call void @llvmdb_PString([0 x i8]* %19, i8 0)
	br label %L.1
L.3:
	%20 = load [0 x i8]** %name
	%21 = load i32* %i
	%22 = getelementptr [0 x i8]* %20, i32 0, i32 %21
	store i8 0, i8* %22
	%23 = load [0 x i8]** %name
	%24 = load i32* %i
	%25 = add i32 %24, 1
	%26 = getelementptr [0 x i8]* %23, i32 0, i32 %25
	%27 = bitcast i8* %26 to [0 x i8]*
	%28 = getelementptr [0 x i8]* %27
	%29 = bitcast [0 x i8]* %28 to [0 x i8]*
	call void @llvmdb_PString([0 x i8]* %29, i8 0)
	%30 = load [0 x i8]** %name
	%31 = bitcast [0 x i8]* %30 to [0 x i8]*
	call void @llvmdb_PString([0 x i8]* %31, i8 0)
	br label %L.1
L.1:
	call void @llvmdb_PNull(i8 1)
	br label %return
return:
	ret void
}
define internal void @llvmdb_FileFinish(%symb.SymbNode* %fs$) nounwind {
L.0:
	%fs = alloca %symb.SymbNode*
	store %symb.SymbNode* %fs$, %symb.SymbNode** %fs
	%ps = alloca %symb.SymbNode*
	%0 = load %symb.SymbNode** %fs
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 2
	%2 = load %symb.SymbNode** %1
	%3 = bitcast %symb.SymbNode* %2 to %symb.SymbNode*
	store %symb.SymbNode* %3, %symb.SymbNode** %ps
	%4 = load %symb.SymbNode** %ps
	%5 = icmp ne %symb.SymbNode* %4, null
	br i1 %5, label %L.2, label %L.3
L.2:
	%6 = load %symb.SymbNode** %ps
	%7 = getelementptr %symb.SymbNode* %6, i32 0, i32 12
	%8 = load i16* %7
	store i16 %8, i16* @llvmdb_file
	br label %L.1
L.3:
	store i16 0, i16* @llvmdb_file
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@S.634 = internal constant [70 x i8] c"declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone\0A\00"
@S.635 = internal constant [19 x i8] c"!llvm.dbg.cu = !{!\00"
@S.636 = internal constant [3 x i8] c"}\0A\00"
@S.637 = internal constant [4 x i8] c"ESL\00"
define internal void @llvmdb_ProgStart(%symb.SymbNode* %fs$, i8 zeroext %opt$) nounwind {
L.0:
	%fs = alloca %symb.SymbNode*
	%opt = alloca i8
	store %symb.SymbNode* %fs$, %symb.SymbNode** %fs
	store i8 %opt$, i8* %opt
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = getelementptr [70 x i8]* @S.634
	%3 = bitcast [70 x i8]* %2 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %1, [0 x i8]* %3)
	store i16 0, i16* @llvmdb_seqno
	%4 = load i16* @llvmdb_seqno
	store i16 %4, i16* @llvmdb_unit
	%5 = load i16* @llvmdb_seqno
	%6 = add i16 %5, 1
	store i16 %6, i16* @llvmdb_seqno
	%7 = load i16* @llvmdb_seqno
	store i16 %7, i16* @llvmdb_enums
	%8 = load i16* @llvmdb_seqno
	%9 = add i16 %8, 1
	store i16 %9, i16* @llvmdb_seqno
	%10 = load i16* @llvmdb_seqno
	store i16 %10, i16* @llvmdb_retained
	%11 = load i16* @llvmdb_seqno
	%12 = add i16 %11, 1
	store i16 %12, i16* @llvmdb_seqno
	%13 = load i16* @llvmdb_seqno
	store i16 %13, i16* @llvmdb_subprogs
	%14 = load i16* @llvmdb_seqno
	%15 = add i16 %14, 1
	store i16 %15, i16* @llvmdb_seqno
	%16 = load i16* @llvmdb_seqno
	store i16 %16, i16* @llvmdb_globals
	%17 = load %bout.BufIO** @llvm_f
	%18 = bitcast %bout.BufIO* %17 to %bout.BufIO*
	%19 = getelementptr [19 x i8]* @S.635
	%20 = bitcast [19 x i8]* %19 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %18, [0 x i8]* %20)
	%21 = load %bout.BufIO** @llvm_f
	%22 = bitcast %bout.BufIO* %21 to %bout.BufIO*
	%23 = load i16* @llvmdb_unit
	%24 = zext i16 %23 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %22, i32 %24)
	%25 = load %bout.BufIO** @llvm_f
	%26 = bitcast %bout.BufIO* %25 to %bout.BufIO*
	%27 = getelementptr [3 x i8]* @S.636
	%28 = bitcast [3 x i8]* %27 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %26, [0 x i8]* %28)
	%29 = load i16* @llvmdb_unit
	call void @llvmdb_PHeader(i16 %29, i16 17)
	call void @llvmdb_P32(i32 0, i8 0)
	call void @llvmdb_P32(i32 12, i8 0)
	%30 = load %symb.SymbNode** %fs
	%31 = getelementptr %symb.SymbNode* %30, i32 0, i32 22
	%32 = getelementptr [0 x i8]* %31
	%33 = bitcast [0 x i8]* %32 to [0 x i8]*
	call void @llvmdb_PString([0 x i8]* %33, i8 0)
	call void @llvmdb_PString([0 x i8]* null, i8 0)
	%34 = getelementptr [4 x i8]* @S.637
	%35 = bitcast [4 x i8]* %34 to [0 x i8]*
	call void @llvmdb_PString([0 x i8]* %35, i8 0)
	call void @llvmdb_PBoolean(i8 1, i8 0)
	%36 = load i8* %opt
	call void @llvmdb_PBoolean(i8 %36, i8 0)
	call void @llvmdb_PString([0 x i8]* null, i8 0)
	call void @llvmdb_P32(i32 0, i8 0)
	%37 = load i16* @llvmdb_enums
	call void @llvmdb_PMetaRef(i16 %37, i8 0)
	%38 = load i16* @llvmdb_retained
	call void @llvmdb_PMetaRef(i16 %38, i8 0)
	%39 = load i16* @llvmdb_subprogs
	call void @llvmdb_PMetaRef(i16 %39, i8 0)
	%40 = load i16* @llvmdb_globals
	call void @llvmdb_PMetaRef(i16 %40, i8 1)
	br label %return
return:
	ret void
}
@S.638 = internal constant [9 x i8] c"i32 0 }\0A\00"
define internal void @llvmdb_ProgFinish() nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	%tag = alloca i16
	%empty = alloca i16
	%list = alloca i16
	%term = alloca i8
	%0 = load i16* @llvmdb_seqno
	%1 = add i16 %0, 1
	store i16 %1, i16* @llvmdb_seqno
	%2 = load i16* @llvmdb_seqno
	store i16 %2, i16* %empty
	%3 = load i16* %empty
	call void @llvmdb_PMetaSeq(i16 %3)
	%4 = load %bout.BufIO** @llvm_f
	%5 = bitcast %bout.BufIO* %4 to %bout.BufIO*
	%6 = getelementptr [9 x i8]* @S.638
	%7 = bitcast [9 x i8]* %6 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %5, [0 x i8]* %7)
	%8 = load i16* @llvmdb_enums
	call void @llvmdb_PMetaSeq(i16 %8)
	%9 = load i16* %empty
	call void @llvmdb_PMetaRef(i16 %9, i8 1)
	%10 = load i16* @llvmdb_retained
	call void @llvmdb_PMetaSeq(i16 %10)
	%11 = load i16* %empty
	call void @llvmdb_PMetaRef(i16 %11, i8 1)
	%12 = call i16 @llvmdb_PListStart()
	store i16 %12, i16* %list
	%13 = load %symb.SymbNode** @llvmdb_sphead
	store %symb.SymbNode* %13, %symb.SymbNode** %s
	%14 = load %symb.SymbNode** %s
	%15 = icmp ne %symb.SymbNode* %14, null
	br i1 %15, label %L.2, label %L.3
L.2:
	store i8 0, i8* %term
	br label %L.4
L.4:
	%16 = load %symb.SymbNode** %s
	%17 = icmp ne %symb.SymbNode* %16, null
	%18 = xor i1 %17, true
	br i1 %18, label %L.5, label %L.6
L.6:
	%19 = load %symb.SymbNode** %s
	%20 = getelementptr %symb.SymbNode* %19, i32 0, i32 12
	%21 = load i16* %20
	store i16 %21, i16* %tag
	%22 = load %symb.SymbNode** %s
	%23 = getelementptr %symb.SymbNode* %22, i32 0, i32 0
	%24 = load %symb.SymbNode** %23
	%25 = bitcast %symb.SymbNode* %24 to %symb.SymbNode*
	store %symb.SymbNode* %25, %symb.SymbNode** %s
	%26 = load %symb.SymbNode** %s
	%27 = icmp eq %symb.SymbNode* %26, null
	br i1 %27, label %L.8, label %L.7
L.8:
	store i8 1, i8* %term
	br label %L.7
L.7:
	%28 = load i16* %tag
	%29 = load i8* %term
	call void @llvmdb_PMetaRef(i16 %28, i8 %29)
	br label %L.4
L.5:
	br label %L.1
L.3:
	%30 = load i16* %empty
	call void @llvmdb_PMetaRef(i16 %30, i8 1)
	br label %L.1
L.1:
	%31 = load i16* @llvmdb_subprogs
	call void @llvmdb_PMetaSeq(i16 %31)
	%32 = load i16* %list
	call void @llvmdb_PMetaRef(i16 %32, i8 1)
	%33 = call i16 @llvmdb_PListStart()
	store i16 %33, i16* %list
	%34 = load %symb.SymbNode** @llvmdb_gvhead
	store %symb.SymbNode* %34, %symb.SymbNode** %s
	%35 = load %symb.SymbNode** %s
	%36 = icmp ne %symb.SymbNode* %35, null
	br i1 %36, label %L.10, label %L.11
L.10:
	store i8 0, i8* %term
	br label %L.12
L.12:
	%37 = load %symb.SymbNode** %s
	%38 = icmp ne %symb.SymbNode* %37, null
	%39 = xor i1 %38, true
	br i1 %39, label %L.13, label %L.14
L.14:
	%40 = load %symb.SymbNode** %s
	%41 = getelementptr %symb.SymbNode* %40, i32 0, i32 12
	%42 = load i16* %41
	store i16 %42, i16* %tag
	%43 = load %symb.SymbNode** %s
	%44 = getelementptr %symb.SymbNode* %43, i32 0, i32 0
	%45 = load %symb.SymbNode** %44
	%46 = bitcast %symb.SymbNode* %45 to %symb.SymbNode*
	store %symb.SymbNode* %46, %symb.SymbNode** %s
	%47 = load %symb.SymbNode** %s
	%48 = icmp eq %symb.SymbNode* %47, null
	br i1 %48, label %L.16, label %L.15
L.16:
	store i8 1, i8* %term
	br label %L.15
L.15:
	%49 = load i16* %tag
	%50 = load i8* %term
	call void @llvmdb_PMetaRef(i16 %49, i8 %50)
	br label %L.12
L.13:
	br label %L.9
L.11:
	%51 = load i16* %empty
	call void @llvmdb_PMetaRef(i16 %51, i8 1)
	br label %L.9
L.9:
	%52 = load i16* @llvmdb_globals
	call void @llvmdb_PMetaSeq(i16 %52)
	%53 = load i16* %list
	call void @llvmdb_PMetaRef(i16 %53, i8 1)
	br label %return
return:
	ret void
}
@llvm_pbytetype = internal global %type.TypeNode* zeroinitializer, align 4
@llvm_puinttype = internal global [6 x %type.TypeNode*] zeroinitializer, align 4
@llvm_Tseqno = internal global i16 0, align 2
@llvm_Pseqno = internal global i16 0, align 2
@llvm_Lseqno = internal global i16 0, align 2
@llvm_Aseqno = internal global i16 0, align 2
@llvm_labthis = internal global i16 0, align 2
@llvm_loopexit = internal global i16 0, align 2
%llvm.IntrinsicUse = type {%llvm.IntrinsicUse*, %type.TypeNode*, i32}
@llvm_UsedIntrinsic = internal global [10 x %llvm.IntrinsicUse*] zeroinitializer, align 4
define internal void @llvm_UseIntrinsic(i8 zeroext %which$, i32 %size$, %type.TypeNode* %t$) nounwind {
L.0:
	%which = alloca i8
	%size = alloca i32
	%t = alloca %type.TypeNode*
	store i8 %which$, i8* %which
	store i32 %size$, i32* %size
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%piu = alloca %llvm.IntrinsicUse*
	%0 = load i32* %size
	%1 = icmp eq i32 %0, 0
	br i1 %1, label %L.2, label %L.1
L.2:
	store i32 1, i32* %size
	br label %L.1
L.1:
	%2 = load i8* %which
	%3 = zext i8 %2 to i32
	%4 = getelementptr [10 x %llvm.IntrinsicUse*]* @llvm_UsedIntrinsic, i32 0, i32 %3
	%5 = load %llvm.IntrinsicUse** %4
	store %llvm.IntrinsicUse* %5, %llvm.IntrinsicUse** %piu
	br label %L.3
L.3:
	%6 = load %llvm.IntrinsicUse** %piu
	%7 = icmp ne %llvm.IntrinsicUse* %6, null
	br i1 %7, label %L.6, label %L.7
L.6:
	%8 = load %llvm.IntrinsicUse** %piu
	%9 = getelementptr %llvm.IntrinsicUse* %8, i32 0, i32 2
	%10 = load i32* %9
	%11 = load i32* %size
	%12 = icmp ne i32 %10, %11
	br label %L.7
L.7:
	%13 = phi i1 [ false, %L.3 ], [ %12, %L.6 ]
	%14 = xor i1 %13, true
	br i1 %14, label %L.4, label %L.5
L.5:
	%15 = load %llvm.IntrinsicUse** %piu
	%16 = getelementptr %llvm.IntrinsicUse* %15, i32 0, i32 0
	%17 = load %llvm.IntrinsicUse** %16
	%18 = bitcast %llvm.IntrinsicUse* %17 to %llvm.IntrinsicUse*
	store %llvm.IntrinsicUse* %18, %llvm.IntrinsicUse** %piu
	br label %L.3
L.4:
	%19 = load %llvm.IntrinsicUse** %piu
	%20 = icmp eq %llvm.IntrinsicUse* %19, null
	br i1 %20, label %L.9, label %L.8
L.9:
	%21 = call [0 x i8]* @malloc(i32 12)
	%22 = bitcast [0 x i8]* %21 to %llvm.IntrinsicUse*
	store %llvm.IntrinsicUse* %22, %llvm.IntrinsicUse** %piu
	%23 = load i32* %size
	%24 = load %llvm.IntrinsicUse** %piu
	%25 = getelementptr %llvm.IntrinsicUse* %24, i32 0, i32 2
	store i32 %23, i32* %25
	%26 = load %type.TypeNode** %t
	%27 = load %llvm.IntrinsicUse** %piu
	%28 = getelementptr %llvm.IntrinsicUse* %27, i32 0, i32 1
	store %type.TypeNode* %26, %type.TypeNode** %28
	%29 = load i8* %which
	%30 = zext i8 %29 to i32
	%31 = getelementptr [10 x %llvm.IntrinsicUse*]* @llvm_UsedIntrinsic, i32 0, i32 %30
	%32 = load %llvm.IntrinsicUse** %31
	%33 = bitcast %llvm.IntrinsicUse* %32 to %llvm.IntrinsicUse*
	%34 = load %llvm.IntrinsicUse** %piu
	%35 = getelementptr %llvm.IntrinsicUse* %34, i32 0, i32 0
	store %llvm.IntrinsicUse* %33, %llvm.IntrinsicUse** %35
	%36 = load %llvm.IntrinsicUse** %piu
	%37 = load i8* %which
	%38 = zext i8 %37 to i32
	%39 = getelementptr [10 x %llvm.IntrinsicUse*]* @llvm_UsedIntrinsic, i32 0, i32 %38
	store %llvm.IntrinsicUse* %36, %llvm.IntrinsicUse** %39
	br label %L.8
L.8:
	br label %return
return:
	ret void
}
@S.639 = internal constant [72 x i8] c"declare void @llvm.memcpy.p0i8.p0i8.%W(i8*, i8*, %W, i32, i1) nounwind\0A\00"
@S.640 = internal constant [66 x i8] c"declare void @llvm.memset.p0i8.%W(i8*, i8, %W, i32, i1) nounwind\0A\00"
@S.641 = internal constant [31 x i8] c"declare %K @llvm.bswap.%K(%K)\0A\00"
@S.642 = internal constant [34 x i8] c"declare %K @llvm.ctlz.%K(%K, i1)\0A\00"
@S.643 = internal constant [34 x i8] c"declare %K @llvm.cttz.%K(%K, i1)\0A\00"
@S.644 = internal constant [31 x i8] c"declare %K @llvm.ctpop.%K(%K)\0A\00"
@S.645 = internal constant [35 x i8] c"declare i1 @memcmp%*B(%K, %K, %W)\0A\00"
@S.646 = internal constant [27 x i8] c"declare %W @memlen%*A(%K)\0A\00"
define internal void @llvm_DeclareIntrinsics() nounwind {
L.0:
	%i = alloca i8
	%piu = alloca %llvm.IntrinsicUse*
	%dummy = alloca %ast.AstNode
	%0 = getelementptr %ast.AstNode* %dummy, i32 0, i32 8
	store %type.TypeNode* null, %type.TypeNode** %0
	store i8 0, i8* %i
	br label %L.1
L.1:
	%1 = load i8* %i
	%2 = icmp ult i8 %1, 9
	%3 = xor i1 %2, true
	br i1 %3, label %L.2, label %L.3
L.3:
	%4 = load i8* %i
	%5 = zext i8 %4 to i32
	%6 = getelementptr [10 x %llvm.IntrinsicUse*]* @llvm_UsedIntrinsic, i32 0, i32 %5
	%7 = load %llvm.IntrinsicUse** %6
	%8 = icmp ne %llvm.IntrinsicUse* %7, null
	br i1 %8, label %L.5, label %L.4
L.5:
	%9 = load i8* %i
	%10 = zext i8 %9 to i32
	%11 = getelementptr [10 x %llvm.IntrinsicUse*]* @llvm_UsedIntrinsic, i32 0, i32 %10
	%12 = load %llvm.IntrinsicUse** %11
	store %llvm.IntrinsicUse* %12, %llvm.IntrinsicUse** %piu
	%13 = load i8* %i
	%14 = zext i8 %13 to i32
	switch i32 %14, label %L.6 [
		i32 0, label %L.8
		i32 2, label %L.9
		i32 5, label %L.10
		i32 6, label %L.11
		i32 7, label %L.12
		i32 8, label %L.13
		i32 3, label %L.14
		i32 4, label %L.15
	]
L.8:
	%15 = getelementptr [72 x i8]* @S.639
	%16 = bitcast [72 x i8]* %15 to [0 x i8]*
	%17 = bitcast %ast.AstNode* %dummy to %ast.AstNode*
	call void @llvm_Print([0 x i8]* %16, %ast.AstNode* %17)
	br label %L.7
L.9:
	%18 = getelementptr [66 x i8]* @S.640
	%19 = bitcast [66 x i8]* %18 to [0 x i8]*
	%20 = bitcast %ast.AstNode* %dummy to %ast.AstNode*
	call void @llvm_Print([0 x i8]* %19, %ast.AstNode* %20)
	br label %L.7
L.10:
	br label %L.16
L.16:
	%21 = load %llvm.IntrinsicUse** %piu
	%22 = getelementptr %llvm.IntrinsicUse* %21, i32 0, i32 1
	%23 = load %type.TypeNode** %22
	%24 = getelementptr %ast.AstNode* %dummy, i32 0, i32 8
	store %type.TypeNode* %23, %type.TypeNode** %24
	%25 = getelementptr [31 x i8]* @S.641
	%26 = bitcast [31 x i8]* %25 to [0 x i8]*
	%27 = bitcast %ast.AstNode* %dummy to %ast.AstNode*
	call void @llvm_Print([0 x i8]* %26, %ast.AstNode* %27)
	%28 = load %llvm.IntrinsicUse** %piu
	%29 = getelementptr %llvm.IntrinsicUse* %28, i32 0, i32 0
	%30 = load %llvm.IntrinsicUse** %29
	%31 = bitcast %llvm.IntrinsicUse* %30 to %llvm.IntrinsicUse*
	store %llvm.IntrinsicUse* %31, %llvm.IntrinsicUse** %piu
	%32 = load %llvm.IntrinsicUse** %piu
	%33 = icmp ne %llvm.IntrinsicUse* %32, null
	%34 = xor i1 %33, true
	br i1 %34, label %L.17, label %L.18
L.18:
	br label %L.16
L.17:
	br label %L.7
L.11:
	br label %L.19
L.19:
	%35 = load %llvm.IntrinsicUse** %piu
	%36 = getelementptr %llvm.IntrinsicUse* %35, i32 0, i32 1
	%37 = load %type.TypeNode** %36
	%38 = getelementptr %ast.AstNode* %dummy, i32 0, i32 8
	store %type.TypeNode* %37, %type.TypeNode** %38
	%39 = getelementptr [34 x i8]* @S.642
	%40 = bitcast [34 x i8]* %39 to [0 x i8]*
	%41 = bitcast %ast.AstNode* %dummy to %ast.AstNode*
	call void @llvm_Print([0 x i8]* %40, %ast.AstNode* %41)
	%42 = load %llvm.IntrinsicUse** %piu
	%43 = getelementptr %llvm.IntrinsicUse* %42, i32 0, i32 0
	%44 = load %llvm.IntrinsicUse** %43
	%45 = bitcast %llvm.IntrinsicUse* %44 to %llvm.IntrinsicUse*
	store %llvm.IntrinsicUse* %45, %llvm.IntrinsicUse** %piu
	%46 = load %llvm.IntrinsicUse** %piu
	%47 = icmp ne %llvm.IntrinsicUse* %46, null
	%48 = xor i1 %47, true
	br i1 %48, label %L.20, label %L.21
L.21:
	br label %L.19
L.20:
	br label %L.7
L.12:
	br label %L.22
L.22:
	%49 = load %llvm.IntrinsicUse** %piu
	%50 = getelementptr %llvm.IntrinsicUse* %49, i32 0, i32 1
	%51 = load %type.TypeNode** %50
	%52 = getelementptr %ast.AstNode* %dummy, i32 0, i32 8
	store %type.TypeNode* %51, %type.TypeNode** %52
	%53 = getelementptr [34 x i8]* @S.643
	%54 = bitcast [34 x i8]* %53 to [0 x i8]*
	%55 = bitcast %ast.AstNode* %dummy to %ast.AstNode*
	call void @llvm_Print([0 x i8]* %54, %ast.AstNode* %55)
	%56 = load %llvm.IntrinsicUse** %piu
	%57 = getelementptr %llvm.IntrinsicUse* %56, i32 0, i32 0
	%58 = load %llvm.IntrinsicUse** %57
	%59 = bitcast %llvm.IntrinsicUse* %58 to %llvm.IntrinsicUse*
	store %llvm.IntrinsicUse* %59, %llvm.IntrinsicUse** %piu
	%60 = load %llvm.IntrinsicUse** %piu
	%61 = icmp ne %llvm.IntrinsicUse* %60, null
	%62 = xor i1 %61, true
	br i1 %62, label %L.23, label %L.24
L.24:
	br label %L.22
L.23:
	br label %L.7
L.13:
	br label %L.25
L.25:
	%63 = load %llvm.IntrinsicUse** %piu
	%64 = getelementptr %llvm.IntrinsicUse* %63, i32 0, i32 1
	%65 = load %type.TypeNode** %64
	%66 = getelementptr %ast.AstNode* %dummy, i32 0, i32 8
	store %type.TypeNode* %65, %type.TypeNode** %66
	%67 = getelementptr [31 x i8]* @S.644
	%68 = bitcast [31 x i8]* %67 to [0 x i8]*
	%69 = bitcast %ast.AstNode* %dummy to %ast.AstNode*
	call void @llvm_Print([0 x i8]* %68, %ast.AstNode* %69)
	%70 = load %llvm.IntrinsicUse** %piu
	%71 = getelementptr %llvm.IntrinsicUse* %70, i32 0, i32 0
	%72 = load %llvm.IntrinsicUse** %71
	%73 = bitcast %llvm.IntrinsicUse* %72 to %llvm.IntrinsicUse*
	store %llvm.IntrinsicUse* %73, %llvm.IntrinsicUse** %piu
	%74 = load %llvm.IntrinsicUse** %piu
	%75 = icmp ne %llvm.IntrinsicUse* %74, null
	%76 = xor i1 %75, true
	br i1 %76, label %L.26, label %L.27
L.27:
	br label %L.25
L.26:
	br label %L.7
L.14:
	br label %L.28
L.28:
	%77 = load %llvm.IntrinsicUse** %piu
	%78 = getelementptr %llvm.IntrinsicUse* %77, i32 0, i32 1
	%79 = load %type.TypeNode** %78
	%80 = getelementptr %ast.AstNode* %dummy, i32 0, i32 8
	store %type.TypeNode* %79, %type.TypeNode** %80
	%81 = getelementptr [35 x i8]* @S.645
	%82 = bitcast [35 x i8]* %81 to [0 x i8]*
	%83 = bitcast %ast.AstNode* %dummy to %ast.AstNode*
	call void @llvm_Print([0 x i8]* %82, %ast.AstNode* %83)
	%84 = load %llvm.IntrinsicUse** %piu
	%85 = getelementptr %llvm.IntrinsicUse* %84, i32 0, i32 0
	%86 = load %llvm.IntrinsicUse** %85
	%87 = bitcast %llvm.IntrinsicUse* %86 to %llvm.IntrinsicUse*
	store %llvm.IntrinsicUse* %87, %llvm.IntrinsicUse** %piu
	%88 = load %llvm.IntrinsicUse** %piu
	%89 = icmp ne %llvm.IntrinsicUse* %88, null
	%90 = xor i1 %89, true
	br i1 %90, label %L.29, label %L.30
L.30:
	br label %L.28
L.29:
	br label %L.7
L.15:
	br label %L.31
L.31:
	%91 = load %llvm.IntrinsicUse** %piu
	%92 = getelementptr %llvm.IntrinsicUse* %91, i32 0, i32 1
	%93 = load %type.TypeNode** %92
	%94 = getelementptr %ast.AstNode* %dummy, i32 0, i32 8
	store %type.TypeNode* %93, %type.TypeNode** %94
	%95 = getelementptr [27 x i8]* @S.646
	%96 = bitcast [27 x i8]* %95 to [0 x i8]*
	%97 = bitcast %ast.AstNode* %dummy to %ast.AstNode*
	call void @llvm_Print([0 x i8]* %96, %ast.AstNode* %97)
	%98 = load %llvm.IntrinsicUse** %piu
	%99 = getelementptr %llvm.IntrinsicUse* %98, i32 0, i32 0
	%100 = load %llvm.IntrinsicUse** %99
	%101 = bitcast %llvm.IntrinsicUse* %100 to %llvm.IntrinsicUse*
	store %llvm.IntrinsicUse* %101, %llvm.IntrinsicUse** %piu
	%102 = load %llvm.IntrinsicUse** %piu
	%103 = icmp ne %llvm.IntrinsicUse* %102, null
	%104 = xor i1 %103, true
	br i1 %104, label %L.32, label %L.33
L.33:
	br label %L.31
L.32:
	br label %L.7
L.6:
	br label %L.7
L.7:
	br label %L.4
L.4:
	%105 = load i8* %i
	%106 = add i8 %105, 1
	store i8 %106, i8* %i
	br label %L.1
L.2:
	br label %return
return:
	ret void
}
define internal void @llvm_PEndLine(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%0 = getelementptr %A.3* @feature, i32 0, i32 3
	%1 = load i8* %0
	%2 = icmp ne i8 %1, 0
	br i1 %2, label %L.2, label %L.1
L.2:
	%3 = load %ast.AstNode** %node
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 5
	%5 = load i16* %4
	call void @llvmdb_PLine(i16 %5)
	br label %L.1
L.1:
	%6 = load %bout.BufIO** @llvm_f
	%7 = bitcast %bout.BufIO* %6 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %7)
	br label %return
return:
	ret void
}
@S.647 = internal constant [2 x i8] c"%\00"
@S.648 = internal constant [2 x i8] c".\00"
define internal void @llvm_PTypeName(%type.TypeNode* %t$) nounwind {
L.0:
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%s = alloca %symb.SymbNode*
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = getelementptr [2 x i8]* @S.647
	%3 = bitcast [2 x i8]* %2 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %1, [0 x i8]* %3)
	%4 = load %type.TypeNode** %t
	%5 = getelementptr %type.TypeNode* %4, i32 0, i32 3
	%6 = load %symb.SymbNode** %5
	%7 = bitcast %symb.SymbNode* %6 to %symb.SymbNode*
	store %symb.SymbNode* %7, %symb.SymbNode** %s
	%8 = load %symb.SymbNode** %s
	%9 = icmp ne %symb.SymbNode* %8, null
	br i1 %9, label %L.2, label %L.3
L.2:
	%10 = load %symb.SymbNode** %s
	%11 = getelementptr %symb.SymbNode* %10, i32 0, i32 2
	%12 = load %symb.SymbNode** %11
	%13 = icmp ne %symb.SymbNode* %12, null
	br i1 %13, label %L.5, label %L.4
L.5:
	%14 = load %bout.BufIO** @llvm_f
	%15 = bitcast %bout.BufIO* %14 to %bout.BufIO*
	%16 = load %symb.SymbNode** %s
	%17 = getelementptr %symb.SymbNode* %16, i32 0, i32 2
	%18 = load %symb.SymbNode** %17
	%19 = getelementptr %symb.SymbNode* %18, i32 0, i32 22
	%20 = getelementptr [0 x i8]* %19
	%21 = bitcast [0 x i8]* %20 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %15, [0 x i8]* %21)
	%22 = load %bout.BufIO** @llvm_f
	%23 = bitcast %bout.BufIO* %22 to %bout.BufIO*
	%24 = getelementptr [2 x i8]* @S.648
	%25 = bitcast [2 x i8]* %24 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %23, [0 x i8]* %25)
	br label %L.4
L.4:
	%26 = load %bout.BufIO** @llvm_f
	%27 = bitcast %bout.BufIO* %26 to %bout.BufIO*
	%28 = load %symb.SymbNode** %s
	%29 = getelementptr %symb.SymbNode* %28, i32 0, i32 22
	%30 = getelementptr [0 x i8]* %29
	%31 = bitcast [0 x i8]* %30 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %27, [0 x i8]* %31)
	br label %L.1
L.3:
	%32 = load %bout.BufIO** @llvm_f
	%33 = bitcast %bout.BufIO* %32 to %bout.BufIO*
	%34 = bitcast [3 x i8]* @llvm_anon_prefix to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %33, [0 x i8]* %34)
	%35 = load %type.TypeNode** %t
	%36 = getelementptr %type.TypeNode* %35, i32 0, i32 13
	%37 = load i16* %36
	%38 = icmp eq i16 %37, 0
	br i1 %38, label %L.7, label %L.6
L.7:
	%39 = load i16* @llvm_Aseqno
	%40 = add i16 %39, 1
	store i16 %40, i16* @llvm_Aseqno
	%41 = load i16* @llvm_Aseqno
	%42 = load %type.TypeNode** %t
	%43 = getelementptr %type.TypeNode* %42, i32 0, i32 13
	store i16 %41, i16* %43
	br label %L.6
L.6:
	%44 = load %bout.BufIO** @llvm_f
	%45 = bitcast %bout.BufIO* %44 to %bout.BufIO*
	%46 = load %type.TypeNode** %t
	%47 = getelementptr %type.TypeNode* %46, i32 0, i32 13
	%48 = load i16* %47
	call void @bout_BufIO_uint16(%bout.BufIO* %45, i16 %48)
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@S.649 = internal constant [2 x i8] c"{\00"
@S.650 = internal constant [3 x i8] c", \00"
@S.651 = internal constant [2 x i8] c"}\00"
define internal void @llvm_PRecordType(%type.TypeNode* %t$) nounwind {
L.0:
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%s = alloca %symb.SymbNode*
	%0 = load %type.TypeNode** %t
	%1 = getelementptr %type.TypeNode* %0, i32 0, i32 23
	%2 = load i8* %1
	%3 = icmp ne i8 %2, 0
	br i1 %3, label %L.2, label %L.1
L.1:
	%4 = load %type.TypeNode** %t
	%5 = getelementptr %type.TypeNode* %4, i32 0, i32 24
	%6 = load i8* %5
	%7 = icmp ne i8 %6, 0
	br label %L.2
L.2:
	%8 = phi i1 [ true, %L.0 ], [ %7, %L.1 ]
	br i1 %8, label %L.4, label %L.3
L.4:
	%9 = load %bout.BufIO** @llvm_f
	%10 = bitcast %bout.BufIO* %9 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %10, i8 60)
	br label %L.3
L.3:
	%11 = load %bout.BufIO** @llvm_f
	%12 = bitcast %bout.BufIO* %11 to %bout.BufIO*
	%13 = getelementptr [2 x i8]* @S.649
	%14 = bitcast [2 x i8]* %13 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %12, [0 x i8]* %14)
	%15 = load %type.TypeNode** %t
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 4
	%17 = load %symb.SymbNode** %16
	%18 = bitcast %symb.SymbNode* %17 to %symb.SymbNode*
	store %symb.SymbNode* %18, %symb.SymbNode** %s
	br label %L.5
L.5:
	%19 = load %symb.SymbNode** %s
	%20 = icmp ne %symb.SymbNode* %19, null
	%21 = xor i1 %20, true
	br i1 %21, label %L.6, label %L.7
L.7:
	%22 = load %symb.SymbNode** %s
	%23 = getelementptr %symb.SymbNode* %22, i32 0, i32 1
	%24 = load %type.TypeNode** %23
	call void @llvm_PType(%type.TypeNode* %24)
	%25 = load %symb.SymbNode** %s
	%26 = getelementptr %symb.SymbNode* %25, i32 0, i32 0
	%27 = load %symb.SymbNode** %26
	%28 = bitcast %symb.SymbNode* %27 to %symb.SymbNode*
	store %symb.SymbNode* %28, %symb.SymbNode** %s
	%29 = load %symb.SymbNode** %s
	%30 = icmp eq %symb.SymbNode* %29, null
	br i1 %30, label %L.6, label %L.8
L.8:
	%31 = load %bout.BufIO** @llvm_f
	%32 = bitcast %bout.BufIO* %31 to %bout.BufIO*
	%33 = getelementptr [3 x i8]* @S.650
	%34 = bitcast [3 x i8]* %33 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %32, [0 x i8]* %34)
	br label %L.5
L.6:
	%35 = load %bout.BufIO** @llvm_f
	%36 = bitcast %bout.BufIO* %35 to %bout.BufIO*
	%37 = getelementptr [2 x i8]* @S.651
	%38 = bitcast [2 x i8]* %37 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %36, [0 x i8]* %38)
	%39 = load %type.TypeNode** %t
	%40 = getelementptr %type.TypeNode* %39, i32 0, i32 23
	%41 = load i8* %40
	%42 = icmp ne i8 %41, 0
	br i1 %42, label %L.10, label %L.9
L.9:
	%43 = load %type.TypeNode** %t
	%44 = getelementptr %type.TypeNode* %43, i32 0, i32 24
	%45 = load i8* %44
	%46 = icmp ne i8 %45, 0
	br label %L.10
L.10:
	%47 = phi i1 [ true, %L.6 ], [ %46, %L.9 ]
	br i1 %47, label %L.12, label %L.11
L.12:
	%48 = load %bout.BufIO** @llvm_f
	%49 = bitcast %bout.BufIO* %48 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %49, i8 62)
	br label %L.11
L.11:
	br label %return
return:
	ret void
}
define internal void @llvm_PWidth(%type.TypeNode* %t$) nounwind {
L.0:
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%0 = load %type.TypeNode** %t
	%1 = icmp ne %type.TypeNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load %bout.BufIO** @llvm_f
	%3 = bitcast %bout.BufIO* %2 to %bout.BufIO*
	%4 = load %type.TypeNode** %t
	%5 = getelementptr %type.TypeNode* %4, i32 0, i32 10
	%6 = load i32* %5
	%7 = load %target.ModelT** @target_Target
	%8 = getelementptr %target.ModelT* %7, i32 0, i32 2
	%9 = load i8* %8
	%10 = zext i8 %9 to i32
	%11 = udiv i32 %6, %10
	call void @bout_BufIO_uint(%bout.BufIO* %3, i32 %11)
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
define internal void @llvm_PAlign(%type.TypeNode* %t$) nounwind {
L.0:
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%0 = load %type.TypeNode** %t
	%1 = icmp ne %type.TypeNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load %bout.BufIO** @llvm_f
	%3 = bitcast %bout.BufIO* %2 to %bout.BufIO*
	%4 = load %type.TypeNode** %t
	%5 = getelementptr %type.TypeNode* %4, i32 0, i32 11
	%6 = load i32* %5
	%7 = load %target.ModelT** @target_Target
	%8 = getelementptr %target.ModelT* %7, i32 0, i32 2
	%9 = load i8* %8
	%10 = zext i8 %9 to i32
	%11 = udiv i32 %6, %10
	call void @bout_BufIO_uint(%bout.BufIO* %3, i32 %11)
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@S.652 = internal constant [6 x i8] c"float\00"
@S.653 = internal constant [7 x i8] c"double\00"
@S.654 = internal constant [4 x i8] c" x \00"
define internal void @llvm_PType(%type.TypeNode* %t$) nounwind {
L.0:
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%size = alloca i32
	%0 = load %type.TypeNode** %t
	%1 = icmp ne %type.TypeNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load %type.TypeNode** %t
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 14
	%4 = load i8* %3
	%5 = zext i8 %4 to i32
	switch i32 %5, label %L.3 [
		i32 1, label %L.5
		i32 2, label %L.5
		i32 3, label %L.5
		i32 4, label %L.6
		i32 5, label %L.7
		i32 7, label %L.8
		i32 6, label %L.9
		i32 8, label %L.10
	]
L.5:
	%6 = load %type.TypeNode** %t
	%7 = getelementptr %type.TypeNode* %6, i32 0, i32 9
	%8 = load i32* %7
	%9 = call i32 @target_isize(i32 %8)
	store i32 %9, i32* %size
	%10 = load %bout.BufIO** @llvm_f
	%11 = bitcast %bout.BufIO* %10 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %11, i8 105)
	%12 = load %bout.BufIO** @llvm_f
	%13 = bitcast %bout.BufIO* %12 to %bout.BufIO*
	%14 = load i32* %size
	call void @bout_BufIO_uint(%bout.BufIO* %13, i32 %14)
	br label %L.4
L.6:
	%15 = load %type.TypeNode** %t
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 9
	%17 = load i32* %16
	switch i32 %17, label %L.11 [
		i32 32, label %L.13
		i32 64, label %L.14
	]
L.13:
	%18 = load %bout.BufIO** @llvm_f
	%19 = bitcast %bout.BufIO* %18 to %bout.BufIO*
	%20 = getelementptr [6 x i8]* @S.652
	%21 = bitcast [6 x i8]* %20 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %19, [0 x i8]* %21)
	br label %L.12
L.14:
	%22 = load %bout.BufIO** @llvm_f
	%23 = bitcast %bout.BufIO* %22 to %bout.BufIO*
	%24 = getelementptr [7 x i8]* @S.653
	%25 = bitcast [7 x i8]* %24 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %23, [0 x i8]* %25)
	br label %L.12
L.11:
	br label %L.12
L.12:
	br label %L.4
L.7:
	%26 = load %type.TypeNode** %t
	%27 = getelementptr %type.TypeNode* %26, i32 0, i32 0
	%28 = load %type.TypeNode** %27
	%29 = bitcast %type.TypeNode* %28 to %type.TypeNode*
	call void @llvm_PType(%type.TypeNode* %29)
	%30 = load %bout.BufIO** @llvm_f
	%31 = bitcast %bout.BufIO* %30 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %31, i8 42)
	br label %L.4
L.8:
	%32 = load %type.TypeNode** %t
	%33 = getelementptr %type.TypeNode* %32, i32 0, i32 21
	%34 = load i8* %33
	%35 = icmp ne i8 %34, 0
	br i1 %35, label %L.16, label %L.17
L.16:
	%36 = load %type.TypeNode** %t
	%37 = getelementptr %type.TypeNode* %36, i32 0, i32 9
	%38 = load i32* %37
	%39 = call i32 @target_isize(i32 %38)
	store i32 %39, i32* %size
	%40 = load %bout.BufIO** @llvm_f
	%41 = bitcast %bout.BufIO* %40 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %41, i8 105)
	%42 = load %bout.BufIO** @llvm_f
	%43 = bitcast %bout.BufIO* %42 to %bout.BufIO*
	%44 = load i32* %size
	call void @bout_BufIO_uint(%bout.BufIO* %43, i32 %44)
	br label %L.15
L.17:
	%45 = load %type.TypeNode** %t
	%46 = getelementptr %type.TypeNode* %45, i32 0, i32 28
	%47 = load i8* %46
	%48 = icmp ne i8 %47, 0
	br i1 %48, label %L.19, label %L.20
L.19:
	%49 = load %type.TypeNode** %t
	call void @llvm_PTypeName(%type.TypeNode* %49)
	br label %L.18
L.20:
	%50 = load %type.TypeNode** %t
	call void @llvm_PRecordType(%type.TypeNode* %50)
	br label %L.18
L.18:
	br label %L.15
L.15:
	br label %L.4
L.9:
	%51 = load %type.TypeNode** %t
	%52 = getelementptr %type.TypeNode* %51, i32 0, i32 21
	%53 = load i8* %52
	%54 = icmp ne i8 %53, 0
	br i1 %54, label %L.22, label %L.23
L.22:
	%55 = load %type.TypeNode** %t
	%56 = getelementptr %type.TypeNode* %55, i32 0, i32 9
	%57 = load i32* %56
	%58 = call i32 @target_isize(i32 %57)
	store i32 %58, i32* %size
	%59 = load %bout.BufIO** @llvm_f
	%60 = bitcast %bout.BufIO* %59 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %60, i8 105)
	%61 = load %bout.BufIO** @llvm_f
	%62 = bitcast %bout.BufIO* %61 to %bout.BufIO*
	%63 = load i32* %size
	call void @bout_BufIO_uint(%bout.BufIO* %62, i32 %63)
	br label %L.21
L.23:
	%64 = load %bout.BufIO** @llvm_f
	%65 = bitcast %bout.BufIO* %64 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %65, i8 91)
	%66 = load %bout.BufIO** @llvm_f
	%67 = bitcast %bout.BufIO* %66 to %bout.BufIO*
	%68 = load %type.TypeNode** %t
	%69 = call i32 @type_TypeNode_Span(%type.TypeNode* %68)
	call void @bout_BufIO_uint32(%bout.BufIO* %67, i32 %69)
	%70 = load %bout.BufIO** @llvm_f
	%71 = bitcast %bout.BufIO* %70 to %bout.BufIO*
	%72 = getelementptr [4 x i8]* @S.654
	%73 = bitcast [4 x i8]* %72 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %71, [0 x i8]* %73)
	%74 = load %type.TypeNode** %t
	%75 = getelementptr %type.TypeNode* %74, i32 0, i32 0
	%76 = load %type.TypeNode** %75
	%77 = bitcast %type.TypeNode* %76 to %type.TypeNode*
	call void @llvm_PType(%type.TypeNode* %77)
	%78 = load %bout.BufIO** @llvm_f
	%79 = bitcast %bout.BufIO* %78 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %79, i8 93)
	br label %L.21
L.21:
	br label %L.4
L.10:
	%80 = load %type.TypeNode** %t
	%81 = getelementptr %type.TypeNode* %80, i32 0, i32 4
	%82 = load %symb.SymbNode** %81
	%83 = getelementptr %symb.SymbNode* %82, i32 0, i32 4
	%84 = load %type.TypeListEntry** %83
	call void @llvm_PRetvType(%type.TypeListEntry* %84, i8 0)
	%85 = load %bout.BufIO** @llvm_f
	%86 = bitcast %bout.BufIO* %85 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %86, i8 32)
	%87 = load %type.TypeNode** %t
	%88 = getelementptr %type.TypeNode* %87, i32 0, i32 4
	%89 = load %symb.SymbNode** %88
	%90 = getelementptr %symb.SymbNode* %89, i32 0, i32 3
	%91 = load %symb.SymbNode** %90
	%92 = bitcast %symb.SymbNode* %91 to %symb.SymbNode*
	call void @llvm_PParmTypes(%symb.SymbNode* %92)
	%93 = load %bout.BufIO** @llvm_f
	%94 = bitcast %bout.BufIO* %93 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %94, i8 42)
	br label %L.4
L.3:
	br label %L.4
L.4:
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@S.655 = internal constant [9 x i8] c" signext\00"
@S.656 = internal constant [9 x i8] c" zeroext\00"
define internal void @llvm_PExtend(%type.TypeNode* %t$) nounwind {
L.0:
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%0 = load %type.TypeNode** %t
	%1 = icmp ne %type.TypeNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load %type.TypeNode** %t
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 14
	%4 = load i8* %3
	%5 = zext i8 %4 to i32
	switch i32 %5, label %L.3 [
		i32 1, label %L.5
		i32 2, label %L.5
		i32 3, label %L.5
	]
L.5:
	%size = alloca i32
	%6 = load %type.TypeNode** %t
	%7 = getelementptr %type.TypeNode* %6, i32 0, i32 9
	%8 = load i32* %7
	%9 = call i32 @target_isize(i32 %8)
	store i32 %9, i32* %size
	%10 = load i32* %size
	%11 = load %type.TypeNode** @type_wordtype
	%12 = getelementptr %type.TypeNode* %11, i32 0, i32 9
	%13 = load i32* %12
	%14 = icmp ult i32 %10, %13
	br i1 %14, label %L.7, label %L.6
L.7:
	%15 = load %type.TypeNode** %t
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 14
	%17 = load i8* %16
	%18 = icmp eq i8 %17, 3
	br i1 %18, label %L.9, label %L.10
L.9:
	%19 = load %bout.BufIO** @llvm_f
	%20 = bitcast %bout.BufIO* %19 to %bout.BufIO*
	%21 = getelementptr [9 x i8]* @S.655
	%22 = bitcast [9 x i8]* %21 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %20, [0 x i8]* %22)
	br label %L.8
L.10:
	%23 = load %bout.BufIO** @llvm_f
	%24 = bitcast %bout.BufIO* %23 to %bout.BufIO*
	%25 = getelementptr [9 x i8]* @S.656
	%26 = bitcast [9 x i8]* %25 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %24, [0 x i8]* %26)
	br label %L.8
L.8:
	br label %L.6
L.6:
	br label %L.4
L.3:
	br label %L.4
L.4:
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@S.657 = internal constant [4 x i8] c" { \00"
@S.658 = internal constant [3 x i8] c", \00"
@S.659 = internal constant [3 x i8] c" }\00"
@S.660 = internal constant [6 x i8] c" void\00"
define internal void @llvm_PRetvType(%type.TypeListEntry* %tl$, i8 zeroext %extend$) nounwind {
L.0:
	%tl = alloca %type.TypeListEntry*
	%extend = alloca i8
	store %type.TypeListEntry* %tl$, %type.TypeListEntry** %tl
	store i8 %extend$, i8* %extend
	%t = alloca %type.TypeNode*
	%0 = load %type.TypeListEntry** %tl
	%1 = icmp ne %type.TypeListEntry* %0, null
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load %type.TypeListEntry** %tl
	%3 = getelementptr %type.TypeListEntry* %2, i32 0, i32 0
	%4 = load %type.TypeListEntry** %3
	%5 = icmp ne %type.TypeListEntry* %4, null
	br i1 %5, label %L.5, label %L.6
L.5:
	%6 = load %bout.BufIO** @llvm_f
	%7 = bitcast %bout.BufIO* %6 to %bout.BufIO*
	%8 = getelementptr [4 x i8]* @S.657
	%9 = bitcast [4 x i8]* %8 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %7, [0 x i8]* %9)
	br label %L.7
L.7:
	%10 = load %type.TypeListEntry** %tl
	%11 = getelementptr %type.TypeListEntry* %10, i32 0, i32 1
	%12 = load %type.TypeNode** %11
	%13 = bitcast %type.TypeNode* %12 to %type.TypeNode*
	call void @llvm_PType(%type.TypeNode* %13)
	%14 = load %type.TypeListEntry** %tl
	%15 = getelementptr %type.TypeListEntry* %14, i32 0, i32 0
	%16 = load %type.TypeListEntry** %15
	%17 = bitcast %type.TypeListEntry* %16 to %type.TypeListEntry*
	store %type.TypeListEntry* %17, %type.TypeListEntry** %tl
	%18 = load %type.TypeListEntry** %tl
	%19 = icmp eq %type.TypeListEntry* %18, null
	br i1 %19, label %L.8, label %L.9
L.9:
	%20 = load %bout.BufIO** @llvm_f
	%21 = bitcast %bout.BufIO* %20 to %bout.BufIO*
	%22 = getelementptr [3 x i8]* @S.658
	%23 = bitcast [3 x i8]* %22 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %21, [0 x i8]* %23)
	br label %L.7
L.8:
	%24 = load %bout.BufIO** @llvm_f
	%25 = bitcast %bout.BufIO* %24 to %bout.BufIO*
	%26 = getelementptr [3 x i8]* @S.659
	%27 = bitcast [3 x i8]* %26 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %25, [0 x i8]* %27)
	br label %L.4
L.6:
	%28 = load %type.TypeListEntry** %tl
	%29 = getelementptr %type.TypeListEntry* %28, i32 0, i32 1
	%30 = load %type.TypeNode** %29
	%31 = bitcast %type.TypeNode* %30 to %type.TypeNode*
	store %type.TypeNode* %31, %type.TypeNode** %t
	%32 = load i8* %extend
	%33 = icmp ne i8 %32, 0
	br i1 %33, label %L.11, label %L.10
L.11:
	%34 = load %type.TypeNode** %t
	call void @llvm_PExtend(%type.TypeNode* %34)
	br label %L.10
L.10:
	%35 = load %bout.BufIO** @llvm_f
	%36 = bitcast %bout.BufIO* %35 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %36, i8 32)
	%37 = load %type.TypeNode** %t
	call void @llvm_PType(%type.TypeNode* %37)
	br label %L.4
L.4:
	br label %L.1
L.3:
	%38 = load %bout.BufIO** @llvm_f
	%39 = bitcast %bout.BufIO* %38 to %bout.BufIO*
	%40 = getelementptr [6 x i8]* @S.660
	%41 = bitcast [6 x i8]* %40 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %39, [0 x i8]* %41)
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@S.661 = internal constant [3 x i8] c", \00"
define internal void @llvm_PParmTypes(%symb.SymbNode* %s$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %1, i8 40)
	br label %L.1
L.1:
	%2 = load %symb.SymbNode** %s
	%3 = icmp ne %symb.SymbNode* %2, null
	%4 = xor i1 %3, true
	br i1 %4, label %L.2, label %L.3
L.3:
	%5 = load %symb.SymbNode** %s
	%6 = getelementptr %symb.SymbNode* %5, i32 0, i32 1
	%7 = load %type.TypeNode** %6
	call void @llvm_PType(%type.TypeNode* %7)
	%8 = load %symb.SymbNode** %s
	%9 = getelementptr %symb.SymbNode* %8, i32 0, i32 0
	%10 = load %symb.SymbNode** %9
	%11 = bitcast %symb.SymbNode* %10 to %symb.SymbNode*
	store %symb.SymbNode* %11, %symb.SymbNode** %s
	%12 = load %symb.SymbNode** %s
	%13 = icmp eq %symb.SymbNode* %12, null
	br i1 %13, label %L.2, label %L.4
L.4:
	%14 = load %bout.BufIO** @llvm_f
	%15 = bitcast %bout.BufIO* %14 to %bout.BufIO*
	%16 = getelementptr [3 x i8]* @S.661
	%17 = bitcast [3 x i8]* %16 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %15, [0 x i8]* %17)
	br label %L.1
L.2:
	%18 = load %bout.BufIO** @llvm_f
	%19 = bitcast %bout.BufIO* %18 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %19, i8 41)
	br label %return
return:
	ret void
}
@S.662 = internal constant [5 x i8] c"null\00"
@S.663 = internal constant [10 x i8] c"inttoptr(\00"
@S.664 = internal constant [5 x i8] c" to \00"
define internal void @llvm_ConstantRef(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%v = alloca i64
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 10
	%2 = load i64* %1
	store i64 %2, i64* %v
	%3 = load i64* %v
	%4 = icmp eq i64 %3, 0
	br i1 %4, label %L.2, label %L.3
L.2:
	%5 = load %bout.BufIO** @llvm_f
	%6 = bitcast %bout.BufIO* %5 to %bout.BufIO*
	%7 = getelementptr [5 x i8]* @S.662
	%8 = bitcast [5 x i8]* %7 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %6, [0 x i8]* %8)
	br label %L.1
L.3:
	%9 = load %bout.BufIO** @llvm_f
	%10 = bitcast %bout.BufIO* %9 to %bout.BufIO*
	%11 = getelementptr [10 x i8]* @S.663
	%12 = bitcast [10 x i8]* %11 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %10, [0 x i8]* %12)
	%13 = load %type.TypeNode** @type_wordtype
	call void @llvm_PType(%type.TypeNode* %13)
	%14 = load %bout.BufIO** @llvm_f
	%15 = bitcast %bout.BufIO* %14 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %15, i8 32)
	%16 = load %bout.BufIO** @llvm_f
	%17 = bitcast %bout.BufIO* %16 to %bout.BufIO*
	%18 = load i64* %v
	call void @bout_BufIO_uint64(%bout.BufIO* %17, i64 %18)
	%19 = load %bout.BufIO** @llvm_f
	%20 = bitcast %bout.BufIO* %19 to %bout.BufIO*
	%21 = getelementptr [5 x i8]* @S.664
	%22 = bitcast [5 x i8]* %21 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %20, [0 x i8]* %22)
	%23 = load %ast.AstNode** %node
	%24 = getelementptr %ast.AstNode* %23, i32 0, i32 8
	%25 = load %type.TypeNode** %24
	call void @llvm_PType(%type.TypeNode* %25)
	%26 = load %bout.BufIO** @llvm_f
	%27 = bitcast %bout.BufIO* %26 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %27, i8 41)
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@S.665 = internal constant [5 x i8] c"void\00"
@S.666 = internal constant [2 x i8] c"i\00"
define internal void @llvm_NodeType(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 14
	%4 = load i8* %3
	%5 = zext i8 %4 to i32
	switch i32 %5, label %L.1 [
		i32 0, label %L.3
		i32 4, label %L.4
		i32 5, label %L.5
		i32 6, label %L.6
		i32 7, label %L.6
		i32 8, label %L.6
	]
L.3:
	%6 = load %bout.BufIO** @llvm_f
	%7 = bitcast %bout.BufIO* %6 to %bout.BufIO*
	%8 = getelementptr [5 x i8]* @S.665
	%9 = bitcast [5 x i8]* %8 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %7, [0 x i8]* %9)
	br label %L.2
L.4:
	%10 = load %ast.AstNode** %node
	%11 = getelementptr %ast.AstNode* %10, i32 0, i32 8
	%12 = load %type.TypeNode** %11
	call void @llvm_PType(%type.TypeNode* %12)
	br label %L.2
L.5:
	%13 = load %ast.AstNode** %node
	%14 = getelementptr %ast.AstNode* %13, i32 0, i32 8
	%15 = load %type.TypeNode** %14
	call void @llvm_PType(%type.TypeNode* %15)
	br label %L.2
L.6:
	%16 = load %ast.AstNode** %node
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 8
	%18 = load %type.TypeNode** %17
	call void @llvm_PType(%type.TypeNode* %18)
	br label %L.2
L.1:
	%19 = load %bout.BufIO** @llvm_f
	%20 = bitcast %bout.BufIO* %19 to %bout.BufIO*
	%21 = getelementptr [2 x i8]* @S.666
	%22 = bitcast [2 x i8]* %21 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %20, [0 x i8]* %22)
	%23 = load %bout.BufIO** @llvm_f
	%24 = bitcast %bout.BufIO* %23 to %bout.BufIO*
	%25 = load %ast.AstNode** %node
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 7
	%27 = load i32* %26
	call void @bout_BufIO_uint(%bout.BufIO* %24, i32 %27)
	br label %L.2
L.2:
	br label %return
return:
	ret void
}
define internal void @llvm_PPkgPfx(%symb.SymbNode* %s$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%0 = load %symb.SymbNode** %s
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 2
	%2 = load %symb.SymbNode** %1
	%3 = icmp ne %symb.SymbNode* %2, null
	br i1 %3, label %L.2, label %L.1
L.2:
	%4 = load %symb.SymbNode** %s
	%5 = getelementptr %symb.SymbNode* %4, i32 0, i32 2
	%6 = load %symb.SymbNode** %5
	%7 = bitcast %symb.SymbNode* %6 to %symb.SymbNode*
	call void @llvm_PPkgPfx(%symb.SymbNode* %7)
	br label %L.1
L.1:
	%8 = load %bout.BufIO** @llvm_f
	%9 = bitcast %bout.BufIO* %8 to %bout.BufIO*
	%10 = load %symb.SymbNode** %s
	%11 = getelementptr %symb.SymbNode* %10, i32 0, i32 22
	%12 = getelementptr [0 x i8]* %11
	%13 = bitcast [0 x i8]* %12 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %9, [0 x i8]* %13)
	%14 = load %bout.BufIO** @llvm_f
	%15 = bitcast %bout.BufIO* %14 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %15, i8 95)
	br label %return
return:
	ret void
}
define internal void @llvm_PMethod(%symb.SymbNode* %s$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%bs = alloca %symb.SymbNode*
	%bt = alloca %type.TypeNode*
	%0 = load %symb.SymbNode** %s
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 3
	%2 = load %symb.SymbNode** %1
	%3 = getelementptr %symb.SymbNode* %2, i32 0, i32 1
	%4 = load %type.TypeNode** %3
	store %type.TypeNode* %4, %type.TypeNode** %bt
	%5 = load %type.TypeNode** %bt
	%6 = getelementptr %type.TypeNode* %5, i32 0, i32 14
	%7 = load i8* %6
	%8 = icmp eq i8 %7, 5
	br i1 %8, label %L.2, label %L.1
L.2:
	%9 = load %type.TypeNode** %bt
	%10 = getelementptr %type.TypeNode* %9, i32 0, i32 0
	%11 = load %type.TypeNode** %10
	%12 = bitcast %type.TypeNode* %11 to %type.TypeNode*
	store %type.TypeNode* %12, %type.TypeNode** %bt
	br label %L.1
L.1:
	%13 = load %type.TypeNode** %bt
	%14 = getelementptr %type.TypeNode* %13, i32 0, i32 3
	%15 = load %symb.SymbNode** %14
	%16 = bitcast %symb.SymbNode* %15 to %symb.SymbNode*
	store %symb.SymbNode* %16, %symb.SymbNode** %bs
	%17 = load %symb.SymbNode** %bs
	%18 = getelementptr %symb.SymbNode* %17, i32 0, i32 2
	%19 = load %symb.SymbNode** %18
	%20 = icmp ne %symb.SymbNode* %19, null
	br i1 %20, label %L.4, label %L.3
L.4:
	%21 = load %symb.SymbNode** %bs
	%22 = getelementptr %symb.SymbNode* %21, i32 0, i32 2
	%23 = load %symb.SymbNode** %22
	%24 = bitcast %symb.SymbNode* %23 to %symb.SymbNode*
	call void @llvm_PPkgPfx(%symb.SymbNode* %24)
	br label %L.3
L.3:
	%25 = load %bout.BufIO** @llvm_f
	%26 = bitcast %bout.BufIO* %25 to %bout.BufIO*
	%27 = load %symb.SymbNode** %bs
	%28 = getelementptr %symb.SymbNode* %27, i32 0, i32 22
	%29 = getelementptr [0 x i8]* %28
	%30 = bitcast [0 x i8]* %29 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %26, [0 x i8]* %30)
	%31 = load %bout.BufIO** @llvm_f
	%32 = bitcast %bout.BufIO* %31 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %32, i8 95)
	br label %return
return:
	ret void
}
@S.667 = internal constant [10 x i8] c"inttoptr(\00"
@S.668 = internal constant [5 x i8] c" to \00"
@S.669 = internal constant [3 x i8] c"*)\00"
define internal void @llvm_PName(%symb.SymbNode* %s$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	%0 = load %symb.SymbNode** %s
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 14
	%2 = load i8* %1
	%3 = zext i8 %2 to i32
	switch i32 %3, label %L.1 [
		i32 0, label %L.3
		i32 1, label %L.3
		i32 2, label %L.4
		i32 7, label %L.4
		i32 3, label %L.5
		i32 4, label %L.5
		i32 5, label %L.5
		i32 6, label %L.6
	]
L.3:
	%4 = load %bout.BufIO** @llvm_f
	%5 = bitcast %bout.BufIO* %4 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %5, i8 37)
	%6 = load %bout.BufIO** @llvm_f
	%7 = bitcast %bout.BufIO* %6 to %bout.BufIO*
	%8 = load %symb.SymbNode** %s
	%9 = getelementptr %symb.SymbNode* %8, i32 0, i32 22
	%10 = getelementptr [0 x i8]* %9
	%11 = bitcast [0 x i8]* %10 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %7, [0 x i8]* %11)
	br label %L.2
L.4:
	%12 = load %bout.BufIO** @llvm_f
	%13 = bitcast %bout.BufIO* %12 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %13, i8 64)
	%14 = load %symb.SymbNode** %s
	%15 = getelementptr %symb.SymbNode* %14, i32 0, i32 13
	%16 = load i8* %15
	%17 = icmp eq i8 %16, 5
	br i1 %17, label %L.7, label %L.8
L.7:
	%18 = load %symb.SymbNode** %s
	%19 = getelementptr %symb.SymbNode* %18, i32 0, i32 16
	%20 = load i8* %19
	%21 = icmp ne i8 %20, 0
	br label %L.8
L.8:
	%22 = phi i1 [ false, %L.4 ], [ %21, %L.7 ]
	br i1 %22, label %L.10, label %L.11
L.10:
	%23 = load %symb.SymbNode** %s
	call void @llvm_PMethod(%symb.SymbNode* %23)
	br label %L.9
L.11:
	%24 = load %symb.SymbNode** %s
	%25 = getelementptr %symb.SymbNode* %24, i32 0, i32 2
	%26 = load %symb.SymbNode** %25
	%27 = icmp ne %symb.SymbNode* %26, null
	br i1 %27, label %L.13, label %L.12
L.13:
	%28 = load %symb.SymbNode** %s
	%29 = getelementptr %symb.SymbNode* %28, i32 0, i32 2
	%30 = load %symb.SymbNode** %29
	%31 = bitcast %symb.SymbNode* %30 to %symb.SymbNode*
	call void @llvm_PPkgPfx(%symb.SymbNode* %31)
	br label %L.12
L.12:
	br label %L.9
L.9:
	%32 = load %bout.BufIO** @llvm_f
	%33 = bitcast %bout.BufIO* %32 to %bout.BufIO*
	%34 = load %symb.SymbNode** %s
	%35 = getelementptr %symb.SymbNode* %34, i32 0, i32 22
	%36 = getelementptr [0 x i8]* %35
	%37 = bitcast [0 x i8]* %36 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %33, [0 x i8]* %37)
	br label %L.2
L.5:
	%38 = load %bout.BufIO** @llvm_f
	%39 = bitcast %bout.BufIO* %38 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %39, i8 64)
	%40 = load %symb.SymbNode** %s
	%41 = getelementptr %symb.SymbNode* %40, i32 0, i32 13
	%42 = load i8* %41
	%43 = icmp eq i8 %42, 5
	br i1 %43, label %L.14, label %L.15
L.14:
	%44 = load %symb.SymbNode** %s
	%45 = getelementptr %symb.SymbNode* %44, i32 0, i32 16
	%46 = load i8* %45
	%47 = icmp ne i8 %46, 0
	br label %L.15
L.15:
	%48 = phi i1 [ false, %L.5 ], [ %47, %L.14 ]
	br i1 %48, label %L.17, label %L.16
L.17:
	%49 = load %symb.SymbNode** %s
	call void @llvm_PMethod(%symb.SymbNode* %49)
	br label %L.16
L.16:
	%50 = load %symb.SymbNode** %s
	%51 = getelementptr %symb.SymbNode* %50, i32 0, i32 6
	%52 = load %symb.SymbNode** %51
	%53 = icmp ne %symb.SymbNode* %52, null
	br i1 %53, label %L.19, label %L.20
L.19:
	%54 = load %bout.BufIO** @llvm_f
	%55 = bitcast %bout.BufIO* %54 to %bout.BufIO*
	%56 = load %symb.SymbNode** %s
	%57 = getelementptr %symb.SymbNode* %56, i32 0, i32 6
	%58 = load %symb.SymbNode** %57
	%59 = getelementptr %symb.SymbNode* %58, i32 0, i32 22
	%60 = getelementptr [0 x i8]* %59
	%61 = bitcast [0 x i8]* %60 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %55, [0 x i8]* %61)
	br label %L.18
L.20:
	%62 = load %bout.BufIO** @llvm_f
	%63 = bitcast %bout.BufIO* %62 to %bout.BufIO*
	%64 = load %symb.SymbNode** %s
	%65 = getelementptr %symb.SymbNode* %64, i32 0, i32 22
	%66 = getelementptr [0 x i8]* %65
	%67 = bitcast [0 x i8]* %66 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %63, [0 x i8]* %67)
	br label %L.18
L.18:
	br label %L.2
L.6:
	%68 = load %bout.BufIO** @llvm_f
	%69 = bitcast %bout.BufIO* %68 to %bout.BufIO*
	%70 = getelementptr [10 x i8]* @S.667
	%71 = bitcast [10 x i8]* %70 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %69, [0 x i8]* %71)
	%72 = load %type.TypeNode** @type_wordtype
	call void @llvm_PType(%type.TypeNode* %72)
	%73 = load %bout.BufIO** @llvm_f
	%74 = bitcast %bout.BufIO* %73 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %74, i8 32)
	%75 = load %bout.BufIO** @llvm_f
	%76 = bitcast %bout.BufIO* %75 to %bout.BufIO*
	%77 = load %symb.SymbNode** %s
	%78 = getelementptr %symb.SymbNode* %77, i32 0, i32 9
	%79 = load i64* %78
	call void @bout_BufIO_uint64(%bout.BufIO* %76, i64 %79)
	%80 = load %bout.BufIO** @llvm_f
	%81 = bitcast %bout.BufIO* %80 to %bout.BufIO*
	%82 = getelementptr [5 x i8]* @S.668
	%83 = bitcast [5 x i8]* %82 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %81, [0 x i8]* %83)
	%84 = load %symb.SymbNode** %s
	%85 = getelementptr %symb.SymbNode* %84, i32 0, i32 13
	%86 = load i8* %85
	%87 = icmp eq i8 %86, 5
	br i1 %87, label %L.22, label %L.23
L.22:
	%88 = load %symb.SymbNode** %s
	%89 = getelementptr %symb.SymbNode* %88, i32 0, i32 4
	%90 = load %type.TypeListEntry** %89
	call void @llvm_PRetvType(%type.TypeListEntry* %90, i8 1)
	%91 = load %symb.SymbNode** %s
	%92 = getelementptr %symb.SymbNode* %91, i32 0, i32 3
	%93 = load %symb.SymbNode** %92
	%94 = bitcast %symb.SymbNode* %93 to %symb.SymbNode*
	call void @llvm_PParmTypes(%symb.SymbNode* %94)
	br label %L.21
L.23:
	%95 = load %symb.SymbNode** %s
	%96 = getelementptr %symb.SymbNode* %95, i32 0, i32 1
	%97 = load %type.TypeNode** %96
	call void @llvm_PType(%type.TypeNode* %97)
	br label %L.21
L.21:
	%98 = load %bout.BufIO** @llvm_f
	%99 = bitcast %bout.BufIO* %98 to %bout.BufIO*
	%100 = getelementptr [3 x i8]* @S.669
	%101 = bitcast [3 x i8]* %100 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %99, [0 x i8]* %101)
	br label %L.2
L.1:
	br label %L.2
L.2:
	br label %return
return:
	ret void
}
define internal void @llvm_PTempName(i16 zeroext %n$) nounwind {
L.0:
	%n = alloca i16
	store i16 %n$, i16* %n
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %1, i8 37)
	%2 = load %bout.BufIO** @llvm_f
	%3 = bitcast %bout.BufIO* %2 to %bout.BufIO*
	%4 = load i16* %n
	%5 = zext i16 %4 to i32
	%6 = sub i32 %5, 1
	call void @bout_BufIO_uint(%bout.BufIO* %3, i32 %6)
	br label %return
return:
	ret void
}
@S.670 = internal constant [11 x i8] c"__NoName__\00"
define internal void @llvm_NodeName(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%s = alloca %symb.SymbNode*
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 9
	%2 = load %symb.SymbNode** %1
	store %symb.SymbNode* %2, %symb.SymbNode** %s
	%3 = load %symb.SymbNode** %s
	%4 = icmp ne %symb.SymbNode* %3, null
	br i1 %4, label %L.2, label %L.3
L.2:
	%5 = load %symb.SymbNode** %s
	call void @llvm_PName(%symb.SymbNode* %5)
	br label %L.1
L.3:
	%6 = load %bout.BufIO** @llvm_f
	%7 = bitcast %bout.BufIO* %6 to %bout.BufIO*
	%8 = getelementptr [11 x i8]* @S.670
	%9 = bitcast [11 x i8]* %8 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %7, [0 x i8]* %9)
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@S.671 = internal constant [4 x i8] c".0e\00"
define internal void @llvm_PFloat(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = load %ast.AstNode** %node
	%3 = getelementptr %ast.AstNode* %2, i32 0, i32 10
	%4 = load i64* %3
	call void @bout_BufIO_uint64(%bout.BufIO* %1, i64 %4)
	%5 = load %bout.BufIO** @llvm_f
	%6 = bitcast %bout.BufIO* %5 to %bout.BufIO*
	%7 = getelementptr [4 x i8]* @S.671
	%8 = bitcast [4 x i8]* %7 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %6, [0 x i8]* %8)
	%9 = load %bout.BufIO** @llvm_f
	%10 = bitcast %bout.BufIO* %9 to %bout.BufIO*
	%11 = load %ast.AstNode** %node
	%12 = getelementptr %ast.AstNode* %11, i32 0, i32 4
	%13 = load i16* %12
	%14 = sub i16 0, %13
	call void @bout_BufIO_int16(%bout.BufIO* %10, i16 %14)
	br label %return
return:
	ret void
}
@S.672 = internal constant [23 x i8] c"Assignment to constant\00"
define internal void @llvm_NodeDst(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 0
	%2 = load i8* %1
	%3 = zext i8 %2 to i32
	switch i32 %3, label %L.1 [
		i32 7, label %L.3
		i32 12, label %L.4
		i32 5, label %L.4
	]
L.3:
	%4 = load %ast.AstNode** %node
	%5 = getelementptr %ast.AstNode* %4, i32 0, i32 8
	%6 = load %type.TypeNode** %5
	%7 = getelementptr %type.TypeNode* %6, i32 0, i32 14
	%8 = load i8* %7
	%9 = icmp ne i8 %8, 5
	br i1 %9, label %L.6, label %L.5
L.6:
	%10 = getelementptr [23 x i8]* @S.672
	%11 = bitcast [23 x i8]* %10 to [0 x i8]*
	call void @lex_ErrorS(i8 86, [0 x i8]* %11)
	br label %L.5
L.5:
	%12 = load %ast.AstNode** %node
	call void @llvm_ConstantRef(%ast.AstNode* %12)
	br label %L.2
L.4:
	%13 = load %ast.AstNode** %node
	call void @llvm_NodeName(%ast.AstNode* %13)
	br label %L.2
L.1:
	%14 = load %ast.AstNode** %node
	%15 = getelementptr %ast.AstNode* %14, i32 0, i32 6
	%16 = load i16* %15
	call void @llvm_PTempName(i16 %16)
	br label %L.2
L.2:
	br label %return
return:
	ret void
}
define internal void @llvm_NodeSrc(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 0
	%2 = load i8* %1
	%3 = zext i8 %2 to i32
	switch i32 %3, label %L.1 [
		i32 7, label %L.3
		i32 8, label %L.4
		i32 9, label %L.5
		i32 10, label %L.5
		i32 12, label %L.6
	]
L.3:
	%4 = load %ast.AstNode** %node
	%5 = getelementptr %ast.AstNode* %4, i32 0, i32 8
	%6 = load %type.TypeNode** %5
	%7 = getelementptr %type.TypeNode* %6, i32 0, i32 14
	%8 = load i8* %7
	%9 = zext i8 %8 to i32
	switch i32 %9, label %L.7 [
		i32 1, label %L.9
		i32 2, label %L.9
		i32 3, label %L.10
		i32 5, label %L.11
		i32 8, label %L.11
		i32 6, label %L.12
		i32 7, label %L.12
	]
L.9:
	%10 = load %bout.BufIO** @llvm_f
	%11 = bitcast %bout.BufIO* %10 to %bout.BufIO*
	%12 = load %ast.AstNode** %node
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 10
	%14 = load i64* %13
	call void @bout_BufIO_uint64(%bout.BufIO* %11, i64 %14)
	br label %L.8
L.10:
	%15 = load %bout.BufIO** @llvm_f
	%16 = bitcast %bout.BufIO* %15 to %bout.BufIO*
	%17 = load %ast.AstNode** %node
	%18 = getelementptr %ast.AstNode* %17, i32 0, i32 10
	%19 = load i64* %18
	call void @bout_BufIO_int64(%bout.BufIO* %16, i64 %19)
	br label %L.8
L.11:
	%20 = load %ast.AstNode** %node
	call void @llvm_ConstantRef(%ast.AstNode* %20)
	br label %L.8
L.12:
	%21 = load %bout.BufIO** @llvm_f
	%22 = bitcast %bout.BufIO* %21 to %bout.BufIO*
	%23 = load %ast.AstNode** %node
	%24 = getelementptr %ast.AstNode* %23, i32 0, i32 10
	%25 = load i64* %24
	call void @bout_BufIO_uint64(%bout.BufIO* %22, i64 %25)
	br label %L.8
L.7:
	br label %L.8
L.8:
	br label %L.2
L.4:
	%26 = load %ast.AstNode** %node
	call void @llvm_PFloat(%ast.AstNode* %26)
	br label %L.2
L.5:
	%27 = load %bout.BufIO** @llvm_f
	%28 = bitcast %bout.BufIO* %27 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %28, i8 64)
	%29 = load %bout.BufIO** @llvm_f
	%30 = bitcast %bout.BufIO* %29 to %bout.BufIO*
	%31 = bitcast [3 x i8]* @llvm_scon_prefix to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %30, [0 x i8]* %31)
	%32 = load %bout.BufIO** @llvm_f
	%33 = bitcast %bout.BufIO* %32 to %bout.BufIO*
	%34 = load %ast.AstNode** %node
	%35 = getelementptr %ast.AstNode* %34, i32 0, i32 10
	%36 = load i64* %35
	%37 = trunc i64 %36 to i32
	call void @bout_BufIO_uint32(%bout.BufIO* %33, i32 %37)
	br label %L.2
L.6:
	%38 = load %ast.AstNode** %node
	call void @llvm_NodeName(%ast.AstNode* %38)
	br label %L.2
L.1:
	%39 = load %ast.AstNode** %node
	%40 = getelementptr %ast.AstNode* %39, i32 0, i32 6
	%41 = load i16* %40
	call void @llvm_PTempName(i16 %41)
	br label %L.2
L.2:
	br label %return
return:
	ret void
}
define internal void @llvm_Print([0 x i8]* %fmt$, %ast.AstNode* %anode$) nounwind {
L.0:
	%fmt = alloca [0 x i8]*
	%anode = alloca %ast.AstNode*
	store [0 x i8]* %fmt$, [0 x i8]** %fmt
	store %ast.AstNode* %anode$, %ast.AstNode** %anode
	%i = alloca i32
	%c = alloca i8
	%n = alloca i16
	%node = alloca %ast.AstNode*
	%t = alloca %type.TypeNode*
	store i32 0, i32* %i
	br label %L.1
L.1:
	%0 = load [0 x i8]** %fmt
	%1 = load i32* %i
	%2 = getelementptr [0 x i8]* %0, i32 0, i32 %1
	%3 = load i8* %2
	store i8 %3, i8* %c
	%4 = load i8* %c
	%5 = icmp eq i8 %4, 0
	br i1 %5, label %L.2, label %L.3
L.3:
	%6 = load i8* %c
	%7 = icmp eq i8 %6, 37
	br i1 %7, label %L.5, label %L.6
L.5:
	%8 = load i32* %i
	%9 = add i32 %8, 1
	store i32 %9, i32* %i
	%10 = load [0 x i8]** %fmt
	%11 = load i32* %i
	%12 = getelementptr [0 x i8]* %10, i32 0, i32 %11
	%13 = load i8* %12
	store i8 %13, i8* %c
	%14 = load %ast.AstNode** %anode
	store %ast.AstNode* %14, %ast.AstNode** %node
	%15 = load i8* %c
	%16 = zext i8 %15 to i32
	switch i32 %16, label %L.7 [
		i32 48, label %L.9
		i32 49, label %L.9
		i32 50, label %L.9
		i32 51, label %L.9
		i32 52, label %L.9
		i32 53, label %L.9
		i32 54, label %L.9
		i32 55, label %L.9
		i32 56, label %L.9
		i32 57, label %L.9
	]
L.9:
	store i16 0, i16* %n
	br label %L.10
L.10:
	%17 = load i16* %n
	%18 = mul i16 %17, 10
	%19 = load i8* %c
	%20 = zext i8 %19 to i16
	%21 = sub i16 %20, 48
	%22 = add i16 %18, %21
	store i16 %22, i16* %n
	%23 = load i32* %i
	%24 = add i32 %23, 1
	store i32 %24, i32* %i
	%25 = load [0 x i8]** %fmt
	%26 = load i32* %i
	%27 = getelementptr [0 x i8]* %25, i32 0, i32 %26
	%28 = load i8* %27
	store i8 %28, i8* %c
	%29 = load i8* %c
	%30 = icmp ult i8 %29, 48
	br i1 %30, label %L.14, label %L.13
L.13:
	%31 = load i8* %c
	%32 = icmp ugt i8 %31, 57
	br label %L.14
L.14:
	%33 = phi i1 [ true, %L.10 ], [ %32, %L.13 ]
	br i1 %33, label %L.11, label %L.12
L.12:
	br label %L.10
L.11:
	%34 = load %ast.AstNode** %anode
	%35 = getelementptr %ast.AstNode* %34, i32 0, i32 11
	%36 = load i16* %n
	%37 = zext i16 %36 to i32
	%38 = getelementptr [0 x %ast.AstNode*]* %35, i32 0, i32 %37
	%39 = load %ast.AstNode** %38
	%40 = bitcast %ast.AstNode* %39 to %ast.AstNode*
	store %ast.AstNode* %40, %ast.AstNode** %node
	br label %L.8
L.7:
	br label %L.8
L.8:
	%41 = load %ast.AstNode** %node
	%42 = getelementptr %ast.AstNode* %41, i32 0, i32 8
	%43 = load %type.TypeNode** %42
	store %type.TypeNode* %43, %type.TypeNode** %t
	br label %L.15
L.15:
	%44 = load i8* %c
	%45 = icmp eq i8 %44, 42
	%46 = xor i1 %45, true
	br i1 %46, label %L.16, label %L.17
L.17:
	%47 = load %type.TypeNode** %t
	%48 = icmp ne %type.TypeNode* %47, null
	br i1 %48, label %L.19, label %L.18
L.19:
	%49 = load %type.TypeNode** %t
	%50 = getelementptr %type.TypeNode* %49, i32 0, i32 0
	%51 = load %type.TypeNode** %50
	%52 = bitcast %type.TypeNode* %51 to %type.TypeNode*
	store %type.TypeNode* %52, %type.TypeNode** %t
	br label %L.18
L.18:
	%53 = load i32* %i
	%54 = add i32 %53, 1
	store i32 %54, i32* %i
	%55 = load [0 x i8]** %fmt
	%56 = load i32* %i
	%57 = getelementptr [0 x i8]* %55, i32 0, i32 %56
	%58 = load i8* %57
	store i8 %58, i8* %c
	br label %L.15
L.16:
	%59 = load i8* %c
	%60 = zext i8 %59 to i32
	switch i32 %60, label %L.20 [
		i32 75, label %L.22
		i32 65, label %L.23
		i32 66, label %L.24
		i32 84, label %L.25
		i32 73, label %L.26
		i32 78, label %L.27
		i32 68, label %L.28
		i32 87, label %L.29
		i32 83, label %L.30
		i32 37, label %L.31
	]
L.22:
	%61 = load %type.TypeNode** %t
	call void @llvm_PType(%type.TypeNode* %61)
	br label %L.21
L.23:
	%62 = load %type.TypeNode** %t
	call void @llvm_PAlign(%type.TypeNode* %62)
	br label %L.21
L.24:
	%63 = load %type.TypeNode** %t
	call void @llvm_PWidth(%type.TypeNode* %63)
	br label %L.21
L.25:
	%64 = load %ast.AstNode** %node
	call void @llvm_NodeType(%ast.AstNode* %64)
	br label %L.21
L.26:
	%65 = load %ast.AstNode** %node
	call void @llvm_NodeName(%ast.AstNode* %65)
	br label %L.21
L.27:
	%66 = load %ast.AstNode** %node
	call void @llvm_NodeSrc(%ast.AstNode* %66)
	br label %L.21
L.28:
	%67 = load %ast.AstNode** %node
	call void @llvm_NodeDst(%ast.AstNode* %67)
	br label %L.21
L.29:
	%68 = load %type.TypeNode** @type_wordtype
	call void @llvm_PType(%type.TypeNode* %68)
	br label %L.21
L.30:
	%69 = load %bout.BufIO** @llvm_f
	%70 = bitcast %bout.BufIO* %69 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %70, i8 64)
	%71 = load %bout.BufIO** @llvm_f
	%72 = bitcast %bout.BufIO* %71 to %bout.BufIO*
	%73 = bitcast [3 x i8]* @llvm_scon_prefix to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %72, [0 x i8]* %73)
	%74 = load %bout.BufIO** @llvm_f
	%75 = bitcast %bout.BufIO* %74 to %bout.BufIO*
	%76 = load %ast.AstNode** %node
	%77 = getelementptr %ast.AstNode* %76, i32 0, i32 10
	%78 = load i64* %77
	%79 = trunc i64 %78 to i32
	call void @bout_BufIO_uint32(%bout.BufIO* %75, i32 %79)
	br label %L.21
L.31:
	%80 = load %bout.BufIO** @llvm_f
	%81 = bitcast %bout.BufIO* %80 to %bout.BufIO*
	%82 = load i8* %c
	call void @bout_BufIO_chr(%bout.BufIO* %81, i8 %82)
	br label %L.21
L.20:
	br label %L.21
L.21:
	br label %L.4
L.6:
	%83 = load %bout.BufIO** @llvm_f
	%84 = bitcast %bout.BufIO* %83 to %bout.BufIO*
	%85 = load i8* %c
	call void @bout_BufIO_chr(%bout.BufIO* %84, i8 %85)
	br label %L.4
L.4:
	%86 = load i32* %i
	%87 = add i32 %86, 1
	store i32 %87, i32* %i
	br label %L.1
L.2:
	br label %return
return:
	ret void
}
@S.673 = internal constant [5 x i8] c"%rv.\00"
define internal void @llvm_PRetValName(i16 zeroext %n$) nounwind {
L.0:
	%n = alloca i16
	store i16 %n$, i16* %n
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = getelementptr [5 x i8]* @S.673
	%3 = bitcast [5 x i8]* %2 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %1, [0 x i8]* %3)
	%4 = load %bout.BufIO** @llvm_f
	%5 = bitcast %bout.BufIO* %4 to %bout.BufIO*
	%6 = load i16* %n
	%7 = zext i16 %6 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %5, i32 %7)
	br label %return
return:
	ret void
}
@S.674 = internal constant [9 x i8] c", align \00"
define internal void @llvm_Alignment(%type.TypeNode* %t$) nounwind {
L.0:
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%n = alloca i32
	%0 = load %type.TypeNode** %t
	%1 = getelementptr %type.TypeNode* %0, i32 0, i32 11
	%2 = load i32* %1
	store i32 %2, i32* %n
	%3 = load i32* %n
	%4 = load %target.ModelT** @target_Target
	%5 = getelementptr %target.ModelT* %4, i32 0, i32 2
	%6 = load i8* %5
	%7 = zext i8 %6 to i32
	%8 = icmp uge i32 %3, %7
	br i1 %8, label %L.2, label %L.1
L.2:
	%9 = load %bout.BufIO** @llvm_f
	%10 = bitcast %bout.BufIO* %9 to %bout.BufIO*
	%11 = getelementptr [9 x i8]* @S.674
	%12 = bitcast [9 x i8]* %11 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %10, [0 x i8]* %12)
	%13 = load %bout.BufIO** @llvm_f
	%14 = bitcast %bout.BufIO* %13 to %bout.BufIO*
	%15 = load i32* %n
	%16 = load %target.ModelT** @target_Target
	%17 = getelementptr %target.ModelT* %16, i32 0, i32 2
	%18 = load i8* %17
	%19 = zext i8 %18 to i32
	%20 = udiv i32 %15, %19
	call void @bout_BufIO_uint(%bout.BufIO* %14, i32 %20)
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@S.675 = internal constant [2 x i8] c",\00"
@S.676 = internal constant [11 x i8] c" section \22\00"
@S.677 = internal constant [2 x i8] c"\22\00"
define internal void @llvm_Section(%symb.SymbNode* %s$, i8 zeroext %comma$) nounwind {
L.0:
	%s = alloca %symb.SymbNode*
	%comma = alloca i8
	store %symb.SymbNode* %s$, %symb.SymbNode** %s
	store i8 %comma$, i8* %comma
	%0 = load %symb.SymbNode** %s
	%1 = icmp ne %symb.SymbNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load i8* %comma
	%3 = icmp ne i8 %2, 0
	br i1 %3, label %L.4, label %L.3
L.4:
	%4 = load %bout.BufIO** @llvm_f
	%5 = bitcast %bout.BufIO* %4 to %bout.BufIO*
	%6 = getelementptr [2 x i8]* @S.675
	%7 = bitcast [2 x i8]* %6 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %5, [0 x i8]* %7)
	br label %L.3
L.3:
	%8 = load %bout.BufIO** @llvm_f
	%9 = bitcast %bout.BufIO* %8 to %bout.BufIO*
	%10 = getelementptr [11 x i8]* @S.676
	%11 = bitcast [11 x i8]* %10 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %9, [0 x i8]* %11)
	%12 = load %bout.BufIO** @llvm_f
	%13 = bitcast %bout.BufIO* %12 to %bout.BufIO*
	%14 = load %symb.SymbNode** %s
	%15 = getelementptr %symb.SymbNode* %14, i32 0, i32 22
	%16 = getelementptr [0 x i8]* %15
	%17 = bitcast [0 x i8]* %16 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %13, [0 x i8]* %17)
	%18 = load %bout.BufIO** @llvm_f
	%19 = bitcast %bout.BufIO* %18 to %bout.BufIO*
	%20 = getelementptr [2 x i8]* @S.677
	%21 = bitcast [2 x i8]* %20 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %19, [0 x i8]* %21)
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@S.678 = internal constant [9 x i8] c" = type \00"
@S.679 = internal constant [2 x i8] c"i\00"
define internal void @llvm_DclType(%type.TypeNode* %t$) nounwind {
L.0:
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%s = alloca %symb.SymbNode*
	%size = alloca i32
	%0 = load %type.TypeNode** %t
	%1 = icmp ne %type.TypeNode* %0, null
	br i1 %1, label %L.1, label %L.2
L.1:
	%2 = load %type.TypeNode** %t
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 28
	%4 = load i8* %3
	%5 = icmp ne i8 %4, 0
	%6 = xor i1 %5, true
	br label %L.2
L.2:
	%7 = phi i1 [ false, %L.0 ], [ %6, %L.1 ]
	br i1 %7, label %L.4, label %L.3
L.4:
	%8 = load %type.TypeNode** %t
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 14
	%10 = load i8* %9
	%11 = zext i8 %10 to i32
	switch i32 %11, label %L.5 [
		i32 5, label %L.7
		i32 6, label %L.7
		i32 8, label %L.8
		i32 7, label %L.9
	]
L.7:
	%12 = load %type.TypeNode** %t
	%13 = getelementptr %type.TypeNode* %12, i32 0, i32 0
	%14 = load %type.TypeNode** %13
	%15 = bitcast %type.TypeNode* %14 to %type.TypeNode*
	call void @llvm_DclType(%type.TypeNode* %15)
	br label %L.6
L.8:
	%16 = load %type.TypeNode** %t
	%17 = getelementptr %type.TypeNode* %16, i32 0, i32 4
	%18 = load %symb.SymbNode** %17
	%19 = getelementptr %symb.SymbNode* %18, i32 0, i32 3
	%20 = load %symb.SymbNode** %19
	%21 = bitcast %symb.SymbNode* %20 to %symb.SymbNode*
	store %symb.SymbNode* %21, %symb.SymbNode** %s
	br label %L.10
L.10:
	%22 = load %symb.SymbNode** %s
	%23 = icmp ne %symb.SymbNode* %22, null
	%24 = xor i1 %23, true
	br i1 %24, label %L.11, label %L.12
L.12:
	%25 = load %symb.SymbNode** %s
	%26 = getelementptr %symb.SymbNode* %25, i32 0, i32 1
	%27 = load %type.TypeNode** %26
	call void @llvm_DclType(%type.TypeNode* %27)
	%28 = load %symb.SymbNode** %s
	%29 = getelementptr %symb.SymbNode* %28, i32 0, i32 0
	%30 = load %symb.SymbNode** %29
	%31 = bitcast %symb.SymbNode* %30 to %symb.SymbNode*
	store %symb.SymbNode* %31, %symb.SymbNode** %s
	br label %L.10
L.11:
	br label %L.6
L.9:
	%32 = load %type.TypeNode** %t
	%33 = getelementptr %type.TypeNode* %32, i32 0, i32 28
	store i8 1, i8* %33
	%34 = load %type.TypeNode** %t
	%35 = getelementptr %type.TypeNode* %34, i32 0, i32 4
	%36 = load %symb.SymbNode** %35
	%37 = bitcast %symb.SymbNode* %36 to %symb.SymbNode*
	store %symb.SymbNode* %37, %symb.SymbNode** %s
	br label %L.13
L.13:
	%38 = load %symb.SymbNode** %s
	%39 = icmp ne %symb.SymbNode* %38, null
	%40 = xor i1 %39, true
	br i1 %40, label %L.14, label %L.15
L.15:
	%41 = load %symb.SymbNode** %s
	%42 = getelementptr %symb.SymbNode* %41, i32 0, i32 1
	%43 = load %type.TypeNode** %42
	call void @llvm_DclType(%type.TypeNode* %43)
	%44 = load %symb.SymbNode** %s
	%45 = getelementptr %symb.SymbNode* %44, i32 0, i32 0
	%46 = load %symb.SymbNode** %45
	%47 = bitcast %symb.SymbNode* %46 to %symb.SymbNode*
	store %symb.SymbNode* %47, %symb.SymbNode** %s
	br label %L.13
L.14:
	%48 = load %type.TypeNode** %t
	call void @llvm_PTypeName(%type.TypeNode* %48)
	%49 = load %bout.BufIO** @llvm_f
	%50 = bitcast %bout.BufIO* %49 to %bout.BufIO*
	%51 = getelementptr [9 x i8]* @S.678
	%52 = bitcast [9 x i8]* %51 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %50, [0 x i8]* %52)
	%53 = load %type.TypeNode** %t
	%54 = getelementptr %type.TypeNode* %53, i32 0, i32 21
	%55 = load i8* %54
	%56 = icmp ne i8 %55, 0
	br i1 %56, label %L.17, label %L.18
L.17:
	%57 = load %type.TypeNode** %t
	%58 = getelementptr %type.TypeNode* %57, i32 0, i32 9
	%59 = load i32* %58
	%60 = call i32 @target_isize(i32 %59)
	store i32 %60, i32* %size
	%61 = load %bout.BufIO** @llvm_f
	%62 = bitcast %bout.BufIO* %61 to %bout.BufIO*
	%63 = getelementptr [2 x i8]* @S.679
	%64 = bitcast [2 x i8]* %63 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %62, [0 x i8]* %64)
	%65 = load %bout.BufIO** @llvm_f
	%66 = bitcast %bout.BufIO* %65 to %bout.BufIO*
	%67 = load i32* %size
	call void @bout_BufIO_uint(%bout.BufIO* %66, i32 %67)
	br label %L.16
L.18:
	%68 = load %type.TypeNode** %t
	call void @llvm_PRecordType(%type.TypeNode* %68)
	br label %L.16
L.16:
	%69 = load %bout.BufIO** @llvm_f
	%70 = bitcast %bout.BufIO* %69 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %70)
	br label %L.6
L.5:
	br label %L.6
L.6:
	br label %L.3
L.3:
	br label %return
return:
	ret void
}
@S.680 = internal constant [7 x i8] c"define\00"
@S.681 = internal constant [8 x i8] c"declare\00"
@S.682 = internal constant [10 x i8] c" internal\00"
@S.683 = internal constant [6 x i8] c" weak\00"
@S.684 = internal constant [10 x i8] c" external\00"
@S.685 = internal constant [5 x i8] c" %I(\00"
@S.686 = internal constant [3 x i8] c" %\00"
@S.687 = internal constant [3 x i8] c", \00"
@S.688 = internal constant [2 x i8] c")\00"
define internal void @llvm_DclProc(%ast.AstNode* %node$, i8 zeroext %isdefine$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	%isdefine = alloca i8
	store %ast.AstNode* %node$, %ast.AstNode** %node
	store i8 %isdefine$, i8* %isdefine
	%s = alloca %symb.SymbNode*
	%ps = alloca %symb.SymbNode*
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 9
	%2 = load %symb.SymbNode** %1
	store %symb.SymbNode* %2, %symb.SymbNode** %ps
	%3 = load i8* %isdefine
	%4 = icmp ne i8 %3, 0
	br i1 %4, label %L.2, label %L.3
L.2:
	%5 = load %bout.BufIO** @llvm_f
	%6 = bitcast %bout.BufIO* %5 to %bout.BufIO*
	%7 = getelementptr [7 x i8]* @S.680
	%8 = bitcast [7 x i8]* %7 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %6, [0 x i8]* %8)
	br label %L.1
L.3:
	%9 = load %bout.BufIO** @llvm_f
	%10 = bitcast %bout.BufIO* %9 to %bout.BufIO*
	%11 = getelementptr [8 x i8]* @S.681
	%12 = bitcast [8 x i8]* %11 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %10, [0 x i8]* %12)
	br label %L.1
L.1:
	%13 = load %symb.SymbNode** %ps
	%14 = getelementptr %symb.SymbNode* %13, i32 0, i32 14
	%15 = load i8* %14
	%16 = zext i8 %15 to i32
	switch i32 %16, label %L.4 [
		i32 2, label %L.6
		i32 7, label %L.6
		i32 4, label %L.7
		i32 5, label %L.8
	]
L.6:
	%17 = load %bout.BufIO** @llvm_f
	%18 = bitcast %bout.BufIO* %17 to %bout.BufIO*
	%19 = getelementptr [10 x i8]* @S.682
	%20 = bitcast [10 x i8]* %19 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %18, [0 x i8]* %20)
	br label %L.5
L.7:
	%21 = load %bout.BufIO** @llvm_f
	%22 = bitcast %bout.BufIO* %21 to %bout.BufIO*
	%23 = getelementptr [6 x i8]* @S.683
	%24 = bitcast [6 x i8]* %23 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %22, [0 x i8]* %24)
	br label %L.5
L.8:
	%25 = load %bout.BufIO** @llvm_f
	%26 = bitcast %bout.BufIO* %25 to %bout.BufIO*
	%27 = getelementptr [10 x i8]* @S.684
	%28 = bitcast [10 x i8]* %27 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %26, [0 x i8]* %28)
	br label %L.5
L.4:
	br label %L.5
L.5:
	%29 = load %symb.SymbNode** %ps
	%30 = getelementptr %symb.SymbNode* %29, i32 0, i32 4
	%31 = load %type.TypeListEntry** %30
	call void @llvm_PRetvType(%type.TypeListEntry* %31, i8 1)
	%32 = getelementptr [5 x i8]* @S.685
	%33 = bitcast [5 x i8]* %32 to [0 x i8]*
	%34 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %33, %ast.AstNode* %34)
	%35 = load %symb.SymbNode** %ps
	%36 = getelementptr %symb.SymbNode* %35, i32 0, i32 3
	%37 = load %symb.SymbNode** %36
	%38 = bitcast %symb.SymbNode* %37 to %symb.SymbNode*
	store %symb.SymbNode* %38, %symb.SymbNode** %s
	br label %L.9
L.9:
	%39 = load %symb.SymbNode** %s
	%40 = icmp ne %symb.SymbNode* %39, null
	%41 = xor i1 %40, true
	br i1 %41, label %L.10, label %L.11
L.11:
	%42 = load %symb.SymbNode** %s
	%43 = getelementptr %symb.SymbNode* %42, i32 0, i32 1
	%44 = load %type.TypeNode** %43
	call void @llvm_PType(%type.TypeNode* %44)
	%45 = load %symb.SymbNode** %s
	%46 = getelementptr %symb.SymbNode* %45, i32 0, i32 1
	%47 = load %type.TypeNode** %46
	call void @llvm_PExtend(%type.TypeNode* %47)
	%48 = load i8* %isdefine
	%49 = icmp ne i8 %48, 0
	br i1 %49, label %L.13, label %L.12
L.13:
	%50 = load %bout.BufIO** @llvm_f
	%51 = bitcast %bout.BufIO* %50 to %bout.BufIO*
	%52 = getelementptr [3 x i8]* @S.686
	%53 = bitcast [3 x i8]* %52 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %51, [0 x i8]* %53)
	%54 = load %bout.BufIO** @llvm_f
	%55 = bitcast %bout.BufIO* %54 to %bout.BufIO*
	%56 = load %symb.SymbNode** %s
	%57 = getelementptr %symb.SymbNode* %56, i32 0, i32 22
	%58 = getelementptr [0 x i8]* %57
	%59 = bitcast [0 x i8]* %58 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %55, [0 x i8]* %59)
	%60 = load %bout.BufIO** @llvm_f
	%61 = bitcast %bout.BufIO* %60 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %61, i8 36)
	br label %L.12
L.12:
	%62 = load %symb.SymbNode** %s
	%63 = getelementptr %symb.SymbNode* %62, i32 0, i32 0
	%64 = load %symb.SymbNode** %63
	%65 = bitcast %symb.SymbNode* %64 to %symb.SymbNode*
	store %symb.SymbNode* %65, %symb.SymbNode** %s
	%66 = load %symb.SymbNode** %s
	%67 = icmp eq %symb.SymbNode* %66, null
	br i1 %67, label %L.10, label %L.14
L.14:
	%68 = load %bout.BufIO** @llvm_f
	%69 = bitcast %bout.BufIO* %68 to %bout.BufIO*
	%70 = getelementptr [3 x i8]* @S.687
	%71 = bitcast [3 x i8]* %70 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %69, [0 x i8]* %71)
	br label %L.9
L.10:
	%72 = load %bout.BufIO** @llvm_f
	%73 = bitcast %bout.BufIO* %72 to %bout.BufIO*
	%74 = getelementptr [2 x i8]* @S.688
	%75 = bitcast [2 x i8]* %74 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %73, [0 x i8]* %75)
	br label %return
return:
	ret void
}
define internal void @llvm_PString([0 x i8]* %s$, i16 zeroext %n$, i8 zeroext %prefix$) nounwind {
L.0:
	%s = alloca [0 x i8]*
	%n = alloca i16
	%prefix = alloca i8
	store [0 x i8]* %s$, [0 x i8]** %s
	store i16 %n$, i16* %n
	store i8 %prefix$, i8* %prefix
	%i = alloca i16
	%c = alloca i8
	%0 = load i8* %prefix
	%1 = icmp ne i8 %0, 0
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load %bout.BufIO** @llvm_f
	%3 = bitcast %bout.BufIO* %2 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %3, i8 99)
	br label %L.1
L.1:
	%4 = load %bout.BufIO** @llvm_f
	%5 = bitcast %bout.BufIO* %4 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %5, i8 34)
	store i16 0, i16* %i
	br label %L.3
L.3:
	%6 = load i16* %i
	%7 = load i16* %n
	%8 = icmp ult i16 %6, %7
	%9 = xor i1 %8, true
	br i1 %9, label %L.4, label %L.5
L.5:
	%10 = load [0 x i8]** %s
	%11 = load i16* %i
	%12 = zext i16 %11 to i32
	%13 = getelementptr [0 x i8]* %10, i32 0, i32 %12
	%14 = load i8* %13
	store i8 %14, i8* %c
	%15 = load i8* %c
	%16 = icmp ult i8 %15, 32
	br i1 %16, label %L.11, label %L.10
L.10:
	%17 = load i8* %c
	%18 = icmp uge i8 %17, 127
	br label %L.11
L.11:
	%19 = phi i1 [ true, %L.5 ], [ %18, %L.10 ]
	br i1 %19, label %L.9, label %L.8
L.8:
	%20 = load i8* %c
	%21 = icmp eq i8 %20, 34
	br label %L.9
L.9:
	%22 = phi i1 [ true, %L.11 ], [ %21, %L.8 ]
	br i1 %22, label %L.7, label %L.6
L.6:
	%23 = load i8* %c
	%24 = icmp eq i8 %23, 92
	br label %L.7
L.7:
	%25 = phi i1 [ true, %L.9 ], [ %24, %L.6 ]
	br i1 %25, label %L.13, label %L.14
L.13:
	%26 = load %bout.BufIO** @llvm_f
	%27 = bitcast %bout.BufIO* %26 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %27, i8 92)
	%28 = load %bout.BufIO** @llvm_f
	%29 = bitcast %bout.BufIO* %28 to %bout.BufIO*
	%30 = load i8* %c
	call void @bout_BufIO_hex8(%bout.BufIO* %29, i8 %30)
	br label %L.12
L.14:
	%31 = load %bout.BufIO** @llvm_f
	%32 = bitcast %bout.BufIO* %31 to %bout.BufIO*
	%33 = load i8* %c
	call void @bout_BufIO_chr(%bout.BufIO* %32, i8 %33)
	br label %L.12
L.12:
	%34 = load i16* %i
	%35 = add i16 %34, 1
	store i16 %35, i16* %i
	br label %L.3
L.4:
	%36 = load %bout.BufIO** @llvm_f
	%37 = bitcast %bout.BufIO* %36 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %37, i8 34)
	br label %return
return:
	ret void
}
@S.689 = internal constant [4 x i8] c"0.0\00"
@S.690 = internal constant [16 x i8] c"zeroinitializer\00"
@S.691 = internal constant [16 x i8] c"zeroinitializer\00"
@S.692 = internal constant [5 x i8] c"null\00"
define internal void @llvm_DefaultInitializer(%type.TypeNode* %t$) nounwind {
L.0:
	%t = alloca %type.TypeNode*
	store %type.TypeNode* %t$, %type.TypeNode** %t
	%0 = load %type.TypeNode** %t
	%1 = getelementptr %type.TypeNode* %0, i32 0, i32 14
	%2 = load i8* %1
	%3 = zext i8 %2 to i32
	switch i32 %3, label %L.1 [
		i32 1, label %L.3
		i32 2, label %L.3
		i32 3, label %L.3
		i32 4, label %L.4
		i32 5, label %L.5
		i32 6, label %L.6
		i32 7, label %L.6
		i32 8, label %L.7
	]
L.3:
	%4 = load %bout.BufIO** @llvm_f
	%5 = bitcast %bout.BufIO* %4 to %bout.BufIO*
	call void @bout_BufIO_uint(%bout.BufIO* %5, i32 0)
	br label %L.2
L.4:
	%6 = load %bout.BufIO** @llvm_f
	%7 = bitcast %bout.BufIO* %6 to %bout.BufIO*
	%8 = getelementptr [4 x i8]* @S.689
	%9 = bitcast [4 x i8]* %8 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %7, [0 x i8]* %9)
	br label %L.2
L.5:
	%10 = load %bout.BufIO** @llvm_f
	%11 = bitcast %bout.BufIO* %10 to %bout.BufIO*
	%12 = getelementptr [16 x i8]* @S.690
	%13 = bitcast [16 x i8]* %12 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %11, [0 x i8]* %13)
	br label %L.2
L.6:
	%14 = load %bout.BufIO** @llvm_f
	%15 = bitcast %bout.BufIO* %14 to %bout.BufIO*
	%16 = getelementptr [16 x i8]* @S.691
	%17 = bitcast [16 x i8]* %16 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %15, [0 x i8]* %17)
	br label %L.2
L.7:
	%18 = load %bout.BufIO** @llvm_f
	%19 = bitcast %bout.BufIO* %18 to %bout.BufIO*
	%20 = getelementptr [5 x i8]* @S.692
	%21 = bitcast [5 x i8]* %20 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %19, [0 x i8]* %21)
	br label %L.2
L.1:
	br label %L.2
L.2:
	br label %return
return:
	ret void
}
@S.693 = internal constant [16 x i8] c"zeroinitializer\00"
@S.694 = internal constant [3 x i8] c"{ \00"
@S.695 = internal constant [2 x i8] c" \00"
@S.696 = internal constant [3 x i8] c", \00"
@S.697 = internal constant [3 x i8] c" }\00"
@S.698 = internal constant [3 x i8] c"[ \00"
@S.699 = internal constant [2 x i8] c" \00"
@S.700 = internal constant [3 x i8] c", \00"
@S.701 = internal constant [3 x i8] c" ]\00"
@S.702 = internal constant [14 x i8] c"bitcast( %T* \00"
@S.703 = internal constant [25 x i8] c"getelementptr( %T* %N ) \00"
@S.704 = internal constant [9 x i8] c" to %T )\00"
@S.705 = internal constant [13 x i8] c"bitcast( %T \00"
@S.706 = internal constant [24 x i8] c"getelementptr( %T %N ) \00"
@S.707 = internal constant [9 x i8] c" to %T )\00"
@S.708 = internal constant [13 x i8] c"bitcast( %T \00"
@S.709 = internal constant [24 x i8] c"getelementptr( %T %N ) \00"
@S.710 = internal constant [9 x i8] c" to %T )\00"
define internal void @llvm_Constant(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%i = alloca i16
	%t = alloca %type.TypeNode*
	%n = alloca i16
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	store %type.TypeNode* %2, %type.TypeNode** %t
	%3 = load %type.TypeNode** %t
	%4 = icmp ne %type.TypeNode* %3, null
	br i1 %4, label %L.2, label %L.1
L.2:
	%5 = load %ast.AstNode** %node
	%6 = getelementptr %ast.AstNode* %5, i32 0, i32 0
	%7 = load i8* %6
	%8 = zext i8 %7 to i32
	switch i32 %8, label %L.3 [
		i32 7, label %L.5
		i32 8, label %L.6
		i32 9, label %L.7
		i32 10, label %L.8
		i32 16, label %L.9
		i32 17, label %L.10
		i32 12, label %L.11
	]
L.5:
	%9 = load %type.TypeNode** %t
	%10 = getelementptr %type.TypeNode* %9, i32 0, i32 14
	%11 = load i8* %10
	%12 = zext i8 %11 to i32
	switch i32 %12, label %L.12 [
		i32 5, label %L.14
		i32 8, label %L.14
		i32 3, label %L.15
		i32 6, label %L.16
	]
L.14:
	%13 = load %ast.AstNode** %node
	call void @llvm_ConstantRef(%ast.AstNode* %13)
	br label %L.13
L.15:
	%14 = load %bout.BufIO** @llvm_f
	%15 = bitcast %bout.BufIO* %14 to %bout.BufIO*
	%16 = load %ast.AstNode** %node
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 10
	%18 = load i64* %17
	call void @bout_BufIO_int64(%bout.BufIO* %15, i64 %18)
	br label %L.13
L.16:
	%19 = load %type.TypeNode** %t
	%20 = getelementptr %type.TypeNode* %19, i32 0, i32 21
	%21 = load i8* %20
	%22 = icmp ne i8 %21, 0
	br i1 %22, label %L.18, label %L.19
L.18:
	%23 = load %bout.BufIO** @llvm_f
	%24 = bitcast %bout.BufIO* %23 to %bout.BufIO*
	%25 = load %ast.AstNode** %node
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 10
	%27 = load i64* %26
	call void @bout_BufIO_uint64(%bout.BufIO* %24, i64 %27)
	br label %L.17
L.19:
	%28 = load %bout.BufIO** @llvm_f
	%29 = bitcast %bout.BufIO* %28 to %bout.BufIO*
	%30 = getelementptr [16 x i8]* @S.693
	%31 = bitcast [16 x i8]* %30 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %29, [0 x i8]* %31)
	br label %L.17
L.17:
	br label %L.13
L.12:
	%32 = load %bout.BufIO** @llvm_f
	%33 = bitcast %bout.BufIO* %32 to %bout.BufIO*
	%34 = load %ast.AstNode** %node
	%35 = getelementptr %ast.AstNode* %34, i32 0, i32 10
	%36 = load i64* %35
	call void @bout_BufIO_uint64(%bout.BufIO* %33, i64 %36)
	br label %L.13
L.13:
	br label %L.4
L.6:
	%37 = load %ast.AstNode** %node
	call void @llvm_PFloat(%ast.AstNode* %37)
	br label %L.4
L.7:
	%38 = load %type.TypeNode** %t
	%39 = getelementptr %type.TypeNode* %38, i32 0, i32 25
	%40 = load i8* %39
	%41 = icmp ne i8 %40, 0
	br i1 %41, label %L.21, label %L.22
L.21:
	%42 = load %ast.AstNode** %node
	%43 = getelementptr %ast.AstNode* %42, i32 0, i32 8
	%44 = load %type.TypeNode** %43
	%45 = call i32 @type_TypeNode_Span(%type.TypeNode* %44)
	%46 = trunc i32 %45 to i16
	store i16 %46, i16* %n
	br label %L.20
L.22:
	%47 = load %type.TypeNode** %t
	%48 = call i32 @type_TypeNode_Span(%type.TypeNode* %47)
	%49 = trunc i32 %48 to i16
	store i16 %49, i16* %n
	br label %L.20
L.20:
	%50 = load %ast.AstNode** %node
	%51 = getelementptr %ast.AstNode* %50, i32 0, i32 9
	%52 = load %symb.SymbNode** %51
	%53 = getelementptr %symb.SymbNode* %52, i32 0, i32 22
	%54 = getelementptr [0 x i8]* %53
	%55 = bitcast [0 x i8]* %54 to [0 x i8]*
	%56 = load i16* %n
	call void @llvm_PString([0 x i8]* %55, i16 %56, i8 1)
	br label %L.4
L.8:
	%57 = load %type.TypeNode** %t
	%58 = getelementptr %type.TypeNode* %57, i32 0, i32 14
	%59 = load i8* %58
	%60 = zext i8 %59 to i32
	switch i32 %60, label %L.23 [
		i32 7, label %L.25
		i32 6, label %L.26
	]
L.25:
	%61 = load %type.TypeNode** %t
	%62 = getelementptr %type.TypeNode* %61, i32 0, i32 23
	%63 = load i8* %62
	%64 = icmp ne i8 %63, 0
	br i1 %64, label %L.28, label %L.27
L.27:
	%65 = load %type.TypeNode** %t
	%66 = getelementptr %type.TypeNode* %65, i32 0, i32 24
	%67 = load i8* %66
	%68 = icmp ne i8 %67, 0
	br label %L.28
L.28:
	%69 = phi i1 [ true, %L.25 ], [ %68, %L.27 ]
	br i1 %69, label %L.30, label %L.29
L.30:
	%70 = load %bout.BufIO** @llvm_f
	%71 = bitcast %bout.BufIO* %70 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %71, i8 60)
	br label %L.29
L.29:
	%72 = load %bout.BufIO** @llvm_f
	%73 = bitcast %bout.BufIO* %72 to %bout.BufIO*
	%74 = getelementptr [3 x i8]* @S.694
	%75 = bitcast [3 x i8]* %74 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %73, [0 x i8]* %75)
	store i16 0, i16* %i
	br label %L.31
L.31:
	%76 = load %ast.AstNode** %node
	%77 = getelementptr %ast.AstNode* %76, i32 0, i32 11
	%78 = load i16* %i
	%79 = zext i16 %78 to i32
	%80 = getelementptr [0 x %ast.AstNode*]* %77, i32 0, i32 %79
	%81 = load %ast.AstNode** %80
	%82 = getelementptr %ast.AstNode* %81, i32 0, i32 8
	%83 = load %type.TypeNode** %82
	call void @llvm_PType(%type.TypeNode* %83)
	%84 = load %bout.BufIO** @llvm_f
	%85 = bitcast %bout.BufIO* %84 to %bout.BufIO*
	%86 = getelementptr [2 x i8]* @S.695
	%87 = bitcast [2 x i8]* %86 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %85, [0 x i8]* %87)
	%88 = load %ast.AstNode** %node
	%89 = getelementptr %ast.AstNode* %88, i32 0, i32 11
	%90 = load i16* %i
	%91 = zext i16 %90 to i32
	%92 = getelementptr [0 x %ast.AstNode*]* %89, i32 0, i32 %91
	%93 = load %ast.AstNode** %92
	%94 = bitcast %ast.AstNode* %93 to %ast.AstNode*
	call void @llvm_Constant(%ast.AstNode* %94)
	%95 = load i16* %i
	%96 = add i16 %95, 1
	store i16 %96, i16* %i
	%97 = load i16* %i
	%98 = load %ast.AstNode** %node
	%99 = getelementptr %ast.AstNode* %98, i32 0, i32 2
	%100 = load i16* %99
	%101 = icmp uge i16 %97, %100
	br i1 %101, label %L.32, label %L.33
L.33:
	%102 = load %bout.BufIO** @llvm_f
	%103 = bitcast %bout.BufIO* %102 to %bout.BufIO*
	%104 = getelementptr [3 x i8]* @S.696
	%105 = bitcast [3 x i8]* %104 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %103, [0 x i8]* %105)
	br label %L.31
L.32:
	%106 = load %bout.BufIO** @llvm_f
	%107 = bitcast %bout.BufIO* %106 to %bout.BufIO*
	%108 = getelementptr [3 x i8]* @S.697
	%109 = bitcast [3 x i8]* %108 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %107, [0 x i8]* %109)
	%110 = load %type.TypeNode** %t
	%111 = getelementptr %type.TypeNode* %110, i32 0, i32 23
	%112 = load i8* %111
	%113 = icmp ne i8 %112, 0
	br i1 %113, label %L.35, label %L.34
L.34:
	%114 = load %type.TypeNode** %t
	%115 = getelementptr %type.TypeNode* %114, i32 0, i32 24
	%116 = load i8* %115
	%117 = icmp ne i8 %116, 0
	br label %L.35
L.35:
	%118 = phi i1 [ true, %L.32 ], [ %117, %L.34 ]
	br i1 %118, label %L.37, label %L.36
L.37:
	%119 = load %bout.BufIO** @llvm_f
	%120 = bitcast %bout.BufIO* %119 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %120, i8 62)
	br label %L.36
L.36:
	br label %L.24
L.26:
	%121 = load %bout.BufIO** @llvm_f
	%122 = bitcast %bout.BufIO* %121 to %bout.BufIO*
	%123 = getelementptr [3 x i8]* @S.698
	%124 = bitcast [3 x i8]* %123 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %122, [0 x i8]* %124)
	store i16 0, i16* %i
	br label %L.38
L.38:
	%125 = load %ast.AstNode** %node
	%126 = getelementptr %ast.AstNode* %125, i32 0, i32 11
	%127 = load i16* %i
	%128 = zext i16 %127 to i32
	%129 = getelementptr [0 x %ast.AstNode*]* %126, i32 0, i32 %128
	%130 = load %ast.AstNode** %129
	%131 = getelementptr %ast.AstNode* %130, i32 0, i32 8
	%132 = load %type.TypeNode** %131
	call void @llvm_PType(%type.TypeNode* %132)
	%133 = load %bout.BufIO** @llvm_f
	%134 = bitcast %bout.BufIO* %133 to %bout.BufIO*
	%135 = getelementptr [2 x i8]* @S.699
	%136 = bitcast [2 x i8]* %135 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %134, [0 x i8]* %136)
	%137 = load %ast.AstNode** %node
	%138 = getelementptr %ast.AstNode* %137, i32 0, i32 11
	%139 = load i16* %i
	%140 = zext i16 %139 to i32
	%141 = getelementptr [0 x %ast.AstNode*]* %138, i32 0, i32 %140
	%142 = load %ast.AstNode** %141
	%143 = bitcast %ast.AstNode* %142 to %ast.AstNode*
	call void @llvm_Constant(%ast.AstNode* %143)
	%144 = load i16* %i
	%145 = add i16 %144, 1
	store i16 %145, i16* %i
	%146 = load i16* %i
	%147 = load %ast.AstNode** %node
	%148 = getelementptr %ast.AstNode* %147, i32 0, i32 2
	%149 = load i16* %148
	%150 = icmp uge i16 %146, %149
	br i1 %150, label %L.39, label %L.40
L.40:
	%151 = load %bout.BufIO** @llvm_f
	%152 = bitcast %bout.BufIO* %151 to %bout.BufIO*
	%153 = getelementptr [3 x i8]* @S.700
	%154 = bitcast [3 x i8]* %153 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %152, [0 x i8]* %154)
	br label %L.38
L.39:
	%155 = load %bout.BufIO** @llvm_f
	%156 = bitcast %bout.BufIO* %155 to %bout.BufIO*
	%157 = getelementptr [3 x i8]* @S.701
	%158 = bitcast [3 x i8]* %157 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %156, [0 x i8]* %158)
	br label %L.24
L.23:
	br label %L.24
L.24:
	br label %L.4
L.9:
	%159 = load %type.TypeNode** %t
	%160 = getelementptr %type.TypeNode* %159, i32 0, i32 0
	%161 = load %type.TypeNode** %160
	%162 = getelementptr %type.TypeNode* %161, i32 0, i32 25
	%163 = load i8* %162
	%164 = icmp ne i8 %163, 0
	br i1 %164, label %L.42, label %L.41
L.42:
	%165 = getelementptr [14 x i8]* @S.702
	%166 = bitcast [14 x i8]* %165 to [0 x i8]*
	%167 = load %ast.AstNode** %node
	%168 = getelementptr %ast.AstNode* %167, i32 0, i32 11
	%169 = getelementptr [0 x %ast.AstNode*]* %168, i32 0, i32 0
	%170 = load %ast.AstNode** %169
	%171 = bitcast %ast.AstNode* %170 to %ast.AstNode*
	call void @llvm_Print([0 x i8]* %166, %ast.AstNode* %171)
	br label %L.41
L.41:
	%172 = getelementptr [25 x i8]* @S.703
	%173 = bitcast [25 x i8]* %172 to [0 x i8]*
	%174 = load %ast.AstNode** %node
	%175 = getelementptr %ast.AstNode* %174, i32 0, i32 11
	%176 = getelementptr [0 x %ast.AstNode*]* %175, i32 0, i32 0
	%177 = load %ast.AstNode** %176
	%178 = bitcast %ast.AstNode* %177 to %ast.AstNode*
	call void @llvm_Print([0 x i8]* %173, %ast.AstNode* %178)
	%179 = load %type.TypeNode** %t
	%180 = getelementptr %type.TypeNode* %179, i32 0, i32 0
	%181 = load %type.TypeNode** %180
	%182 = getelementptr %type.TypeNode* %181, i32 0, i32 25
	%183 = load i8* %182
	%184 = icmp ne i8 %183, 0
	br i1 %184, label %L.44, label %L.43
L.44:
	%185 = getelementptr [9 x i8]* @S.704
	%186 = bitcast [9 x i8]* %185 to [0 x i8]*
	%187 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %186, %ast.AstNode* %187)
	br label %L.43
L.43:
	br label %L.4
L.10:
	%188 = load %type.TypeNode** %t
	%189 = getelementptr %type.TypeNode* %188, i32 0, i32 0
	%190 = load %type.TypeNode** %189
	%191 = getelementptr %type.TypeNode* %190, i32 0, i32 25
	%192 = load i8* %191
	%193 = icmp ne i8 %192, 0
	br i1 %193, label %L.46, label %L.45
L.46:
	%194 = getelementptr [13 x i8]* @S.705
	%195 = bitcast [13 x i8]* %194 to [0 x i8]*
	%196 = load %ast.AstNode** %node
	%197 = getelementptr %ast.AstNode* %196, i32 0, i32 11
	%198 = getelementptr [0 x %ast.AstNode*]* %197, i32 0, i32 0
	%199 = load %ast.AstNode** %198
	%200 = bitcast %ast.AstNode* %199 to %ast.AstNode*
	call void @llvm_Print([0 x i8]* %195, %ast.AstNode* %200)
	br label %L.45
L.45:
	%201 = getelementptr [24 x i8]* @S.706
	%202 = bitcast [24 x i8]* %201 to [0 x i8]*
	%203 = load %ast.AstNode** %node
	%204 = getelementptr %ast.AstNode* %203, i32 0, i32 11
	%205 = getelementptr [0 x %ast.AstNode*]* %204, i32 0, i32 0
	%206 = load %ast.AstNode** %205
	%207 = bitcast %ast.AstNode* %206 to %ast.AstNode*
	call void @llvm_Print([0 x i8]* %202, %ast.AstNode* %207)
	%208 = load %type.TypeNode** %t
	%209 = getelementptr %type.TypeNode* %208, i32 0, i32 0
	%210 = load %type.TypeNode** %209
	%211 = getelementptr %type.TypeNode* %210, i32 0, i32 25
	%212 = load i8* %211
	%213 = icmp ne i8 %212, 0
	br i1 %213, label %L.48, label %L.47
L.48:
	%214 = getelementptr [9 x i8]* @S.707
	%215 = bitcast [9 x i8]* %214 to [0 x i8]*
	%216 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %215, %ast.AstNode* %216)
	br label %L.47
L.47:
	br label %L.4
L.11:
	%217 = load %type.TypeNode** %t
	%218 = getelementptr %type.TypeNode* %217, i32 0, i32 14
	%219 = load i8* %218
	%220 = icmp eq i8 %219, 8
	br i1 %220, label %L.50, label %L.51
L.50:
	%221 = load %ast.AstNode** %node
	%222 = getelementptr %ast.AstNode* %221, i32 0, i32 9
	%223 = load %symb.SymbNode** %222
	call void @llvm_PName(%symb.SymbNode* %223)
	br label %L.49
L.51:
	%224 = load %type.TypeNode** %t
	%225 = getelementptr %type.TypeNode* %224, i32 0, i32 0
	%226 = load %type.TypeNode** %225
	%227 = getelementptr %type.TypeNode* %226, i32 0, i32 25
	%228 = load i8* %227
	%229 = icmp ne i8 %228, 0
	br i1 %229, label %L.53, label %L.52
L.53:
	%230 = getelementptr [13 x i8]* @S.708
	%231 = bitcast [13 x i8]* %230 to [0 x i8]*
	%232 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %231, %ast.AstNode* %232)
	br label %L.52
L.52:
	%233 = getelementptr [24 x i8]* @S.709
	%234 = bitcast [24 x i8]* %233 to [0 x i8]*
	%235 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %234, %ast.AstNode* %235)
	%236 = load %type.TypeNode** %t
	%237 = getelementptr %type.TypeNode* %236, i32 0, i32 0
	%238 = load %type.TypeNode** %237
	%239 = getelementptr %type.TypeNode* %238, i32 0, i32 25
	%240 = load i8* %239
	%241 = icmp ne i8 %240, 0
	br i1 %241, label %L.55, label %L.54
L.55:
	%242 = getelementptr [9 x i8]* @S.710
	%243 = bitcast [9 x i8]* %242 to [0 x i8]*
	%244 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %243, %ast.AstNode* %244)
	br label %L.54
L.54:
	br label %L.49
L.49:
	br label %L.4
L.3:
	br label %L.4
L.4:
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@S.711 = internal constant [16 x i8] c"\09%I = alloca %K\00"
@S.712 = internal constant [7 x i8] c"store \00"
@S.713 = internal constant [9 x i8] c", %K* %D\00"
@S.714 = internal constant [29 x i8] c"initialized local composites\00"
@S.715 = internal constant [25 x i8] c"%I = internal global %K \00"
@S.716 = internal constant [16 x i8] c"%I = global %K \00"
@S.717 = internal constant [21 x i8] c"%I = weak global %K \00"
@S.718 = internal constant [24 x i8] c"%I = external global %K\00"
define internal void @llvm_DclVar(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%s = alloca %symb.SymbNode*
	%rhs = alloca %ast.AstNode*
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 9
	%2 = load %symb.SymbNode** %1
	store %symb.SymbNode* %2, %symb.SymbNode** %s
	%3 = load %ast.AstNode** %node
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 11
	%5 = getelementptr [0 x %ast.AstNode*]* %4, i32 0, i32 0
	%6 = load %ast.AstNode** %5
	%7 = bitcast %ast.AstNode* %6 to %ast.AstNode*
	store %ast.AstNode* %7, %ast.AstNode** %rhs
	%8 = load %symb.SymbNode** %s
	%9 = icmp ne %symb.SymbNode* %8, null
	br i1 %9, label %L.2, label %L.1
L.2:
	%10 = load %symb.SymbNode** %s
	%11 = getelementptr %symb.SymbNode* %10, i32 0, i32 1
	%12 = load %type.TypeNode** %11
	call void @llvm_DclType(%type.TypeNode* %12)
	%13 = load %symb.SymbNode** %s
	%14 = getelementptr %symb.SymbNode* %13, i32 0, i32 14
	%15 = load i8* %14
	%16 = zext i8 %15 to i32
	switch i32 %16, label %L.3 [
		i32 1, label %L.5
		i32 2, label %L.6
		i32 3, label %L.7
		i32 4, label %L.8
		i32 5, label %L.9
	]
L.5:
	%17 = getelementptr [16 x i8]* @S.711
	%18 = bitcast [16 x i8]* %17 to [0 x i8]*
	%19 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %18, %ast.AstNode* %19)
	%20 = load %ast.AstNode** %rhs
	%21 = icmp ne %ast.AstNode* %20, null
	br i1 %21, label %L.11, label %L.10
L.11:
	%22 = load %ast.AstNode** %node
	%23 = getelementptr %ast.AstNode* %22, i32 0, i32 8
	%24 = load %type.TypeNode** %23
	%25 = getelementptr %type.TypeNode* %24, i32 0, i32 14
	%26 = load i8* %25
	%27 = icmp ule i8 %26, 5
	br i1 %27, label %L.13, label %L.14
L.13:
	%28 = load %bout.BufIO** @llvm_f
	%29 = bitcast %bout.BufIO* %28 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %29)
	%30 = load %ast.AstNode** %rhs
	%31 = call i8 @llvm_GenSub(%ast.AstNode* %30)
	%32 = load %bout.BufIO** @llvm_f
	%33 = bitcast %bout.BufIO* %32 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %33, i8 9)
	%34 = load %bout.BufIO** @llvm_f
	%35 = bitcast %bout.BufIO* %34 to %bout.BufIO*
	%36 = getelementptr [7 x i8]* @S.712
	%37 = bitcast [7 x i8]* %36 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %35, [0 x i8]* %37)
	%38 = load %ast.AstNode** %rhs
	call void @llvm_NodeType(%ast.AstNode* %38)
	%39 = load %bout.BufIO** @llvm_f
	%40 = bitcast %bout.BufIO* %39 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %40, i8 32)
	%41 = load %ast.AstNode** %rhs
	call void @llvm_NodeSrc(%ast.AstNode* %41)
	%42 = getelementptr [9 x i8]* @S.713
	%43 = bitcast [9 x i8]* %42 to [0 x i8]*
	%44 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %43, %ast.AstNode* %44)
	br label %L.12
L.14:
	%45 = getelementptr [29 x i8]* @S.714
	%46 = bitcast [29 x i8]* %45 to [0 x i8]*
	call void @lex_ErrorS(i8 0, [0 x i8]* %46)
	br label %L.12
L.12:
	br label %L.10
L.10:
	br label %L.4
L.6:
	%47 = getelementptr [25 x i8]* @S.715
	%48 = bitcast [25 x i8]* %47 to [0 x i8]*
	%49 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %48, %ast.AstNode* %49)
	%50 = load %ast.AstNode** %rhs
	%51 = icmp ne %ast.AstNode* %50, null
	br i1 %51, label %L.16, label %L.17
L.16:
	%52 = load %ast.AstNode** %rhs
	call void @llvm_Constant(%ast.AstNode* %52)
	br label %L.15
L.17:
	%53 = load %ast.AstNode** %node
	%54 = getelementptr %ast.AstNode* %53, i32 0, i32 8
	%55 = load %type.TypeNode** %54
	call void @llvm_DefaultInitializer(%type.TypeNode* %55)
	br label %L.15
L.15:
	%56 = load %symb.SymbNode** %s
	%57 = getelementptr %symb.SymbNode* %56, i32 0, i32 1
	%58 = load %type.TypeNode** %57
	call void @llvm_Alignment(%type.TypeNode* %58)
	%59 = load %symb.SymbNode** %s
	%60 = getelementptr %symb.SymbNode* %59, i32 0, i32 7
	%61 = load %symb.SymbNode** %60
	%62 = bitcast %symb.SymbNode* %61 to %symb.SymbNode*
	call void @llvm_Section(%symb.SymbNode* %62, i8 1)
	br label %L.4
L.7:
	%63 = getelementptr [16 x i8]* @S.716
	%64 = bitcast [16 x i8]* %63 to [0 x i8]*
	%65 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %64, %ast.AstNode* %65)
	%66 = load %ast.AstNode** %rhs
	%67 = icmp ne %ast.AstNode* %66, null
	br i1 %67, label %L.19, label %L.20
L.19:
	%68 = load %ast.AstNode** %rhs
	call void @llvm_Constant(%ast.AstNode* %68)
	br label %L.18
L.20:
	%69 = load %ast.AstNode** %node
	%70 = getelementptr %ast.AstNode* %69, i32 0, i32 8
	%71 = load %type.TypeNode** %70
	call void @llvm_DefaultInitializer(%type.TypeNode* %71)
	br label %L.18
L.18:
	%72 = load %symb.SymbNode** %s
	%73 = getelementptr %symb.SymbNode* %72, i32 0, i32 1
	%74 = load %type.TypeNode** %73
	call void @llvm_Alignment(%type.TypeNode* %74)
	%75 = load %symb.SymbNode** %s
	%76 = getelementptr %symb.SymbNode* %75, i32 0, i32 7
	%77 = load %symb.SymbNode** %76
	%78 = bitcast %symb.SymbNode* %77 to %symb.SymbNode*
	call void @llvm_Section(%symb.SymbNode* %78, i8 1)
	br label %L.4
L.8:
	%79 = getelementptr [21 x i8]* @S.717
	%80 = bitcast [21 x i8]* %79 to [0 x i8]*
	%81 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %80, %ast.AstNode* %81)
	%82 = load %ast.AstNode** %rhs
	%83 = icmp ne %ast.AstNode* %82, null
	br i1 %83, label %L.22, label %L.23
L.22:
	%84 = load %ast.AstNode** %rhs
	call void @llvm_Constant(%ast.AstNode* %84)
	br label %L.21
L.23:
	%85 = load %ast.AstNode** %node
	%86 = getelementptr %ast.AstNode* %85, i32 0, i32 8
	%87 = load %type.TypeNode** %86
	call void @llvm_DefaultInitializer(%type.TypeNode* %87)
	br label %L.21
L.21:
	%88 = load %symb.SymbNode** %s
	%89 = getelementptr %symb.SymbNode* %88, i32 0, i32 1
	%90 = load %type.TypeNode** %89
	call void @llvm_Alignment(%type.TypeNode* %90)
	%91 = load %symb.SymbNode** %s
	%92 = getelementptr %symb.SymbNode* %91, i32 0, i32 7
	%93 = load %symb.SymbNode** %92
	%94 = bitcast %symb.SymbNode* %93 to %symb.SymbNode*
	call void @llvm_Section(%symb.SymbNode* %94, i8 1)
	br label %L.4
L.9:
	%95 = getelementptr [24 x i8]* @S.718
	%96 = bitcast [24 x i8]* %95 to [0 x i8]*
	%97 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %96, %ast.AstNode* %97)
	br label %L.4
L.3:
	br label %L.4
L.4:
	%98 = load %bout.BufIO** @llvm_f
	%99 = bitcast %bout.BufIO* %98 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %99)
	%100 = getelementptr %A.3* @feature, i32 0, i32 3
	%101 = load i8* %100
	%102 = icmp ne i8 %101, 0
	br i1 %102, label %L.25, label %L.24
L.25:
	%103 = load %symb.SymbNode** %s
	%104 = call i16 @llvmdb_DefVar(%symb.SymbNode* %103)
	br label %L.24
L.24:
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@S.719 = internal constant [27 x i8] c"%S = internal constant %K \00"
define internal void @llvm_DclString(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%n = alloca i16
	%0 = getelementptr [27 x i8]* @S.719
	%1 = bitcast [27 x i8]* %0 to [0 x i8]*
	%2 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %1, %ast.AstNode* %2)
	%3 = load %ast.AstNode** %node
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 8
	%5 = load %type.TypeNode** %4
	%6 = call i32 @type_TypeNode_Span(%type.TypeNode* %5)
	%7 = trunc i32 %6 to i16
	store i16 %7, i16* %n
	%8 = load %ast.AstNode** %node
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 9
	%10 = load %symb.SymbNode** %9
	%11 = getelementptr %symb.SymbNode* %10, i32 0, i32 22
	%12 = getelementptr [0 x i8]* %11
	%13 = bitcast [0 x i8]* %12 to [0 x i8]*
	%14 = load i16* %n
	call void @llvm_PString([0 x i8]* %13, i16 %14, i8 1)
	%15 = load %bout.BufIO** @llvm_f
	%16 = bitcast %bout.BufIO* %15 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %16)
	br label %return
return:
	ret void
}
define internal void @llvm_ConstScan(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%i = alloca i16
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 0
	%2 = load i8* %1
	%3 = icmp eq i8 %2, 16
	br i1 %3, label %L.1, label %L.2
L.1:
	%4 = load %ast.AstNode** %node
	%5 = getelementptr %ast.AstNode* %4, i32 0, i32 11
	%6 = getelementptr [0 x %ast.AstNode*]* %5, i32 0, i32 0
	%7 = load %ast.AstNode** %6
	%8 = getelementptr %ast.AstNode* %7, i32 0, i32 0
	%9 = load i8* %8
	%10 = icmp eq i8 %9, 9
	br label %L.2
L.2:
	%11 = phi i1 [ false, %L.0 ], [ %10, %L.1 ]
	br i1 %11, label %L.4, label %L.5
L.4:
	%12 = load %ast.AstNode** %node
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 11
	%14 = getelementptr [0 x %ast.AstNode*]* %13, i32 0, i32 0
	%15 = load %ast.AstNode** %14
	%16 = bitcast %ast.AstNode* %15 to %ast.AstNode*
	call void @llvm_DclString(%ast.AstNode* %16)
	br label %L.3
L.5:
	store i16 0, i16* %i
	br label %L.6
L.6:
	%17 = load i16* %i
	%18 = load %ast.AstNode** %node
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 2
	%20 = load i16* %19
	%21 = icmp ult i16 %17, %20
	%22 = xor i1 %21, true
	br i1 %22, label %L.7, label %L.8
L.8:
	%23 = load %ast.AstNode** %node
	%24 = getelementptr %ast.AstNode* %23, i32 0, i32 11
	%25 = load i16* %i
	%26 = zext i16 %25 to i32
	%27 = getelementptr [0 x %ast.AstNode*]* %24, i32 0, i32 %26
	%28 = load %ast.AstNode** %27
	%29 = bitcast %ast.AstNode* %28 to %ast.AstNode*
	call void @llvm_ConstScan(%ast.AstNode* %29)
	%30 = load i16* %i
	%31 = add i16 %30, 1
	store i16 %31, i16* %i
	br label %L.6
L.7:
	br label %L.3
L.3:
	br label %return
return:
	ret void
}
@S.720 = internal constant [27 x i8] c"%I = internal constant %K \00"
@S.721 = internal constant [18 x i8] c"%I = constant %K \00"
define internal void @llvm_DclCon(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%s = alloca %symb.SymbNode*
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 9
	%2 = load %symb.SymbNode** %1
	store %symb.SymbNode* %2, %symb.SymbNode** %s
	%3 = load %symb.SymbNode** %s
	%4 = icmp ne %symb.SymbNode* %3, null
	br i1 %4, label %L.2, label %L.1
L.2:
	%5 = load %symb.SymbNode** %s
	%6 = getelementptr %symb.SymbNode* %5, i32 0, i32 1
	%7 = load %type.TypeNode** %6
	call void @llvm_DclType(%type.TypeNode* %7)
	%8 = load %ast.AstNode** %node
	call void @llvm_ConstScan(%ast.AstNode* %8)
	%9 = load %symb.SymbNode** %s
	%10 = getelementptr %symb.SymbNode* %9, i32 0, i32 14
	%11 = load i8* %10
	%12 = zext i8 %11 to i32
	switch i32 %12, label %L.3 [
		i32 2, label %L.5
		i32 3, label %L.6
	]
L.5:
	%13 = getelementptr [27 x i8]* @S.720
	%14 = bitcast [27 x i8]* %13 to [0 x i8]*
	%15 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %14, %ast.AstNode* %15)
	br label %L.4
L.6:
	%16 = getelementptr [18 x i8]* @S.721
	%17 = bitcast [18 x i8]* %16 to [0 x i8]*
	%18 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %17, %ast.AstNode* %18)
	br label %L.4
L.3:
	br label %L.4
L.4:
	%19 = load %ast.AstNode** %node
	%20 = getelementptr %ast.AstNode* %19, i32 0, i32 11
	%21 = getelementptr [0 x %ast.AstNode*]* %20, i32 0, i32 0
	%22 = load %ast.AstNode** %21
	%23 = bitcast %ast.AstNode* %22 to %ast.AstNode*
	call void @llvm_Constant(%ast.AstNode* %23)
	%24 = load %symb.SymbNode** %s
	%25 = getelementptr %symb.SymbNode* %24, i32 0, i32 1
	%26 = load %type.TypeNode** %25
	call void @llvm_Alignment(%type.TypeNode* %26)
	%27 = load %symb.SymbNode** %s
	%28 = getelementptr %symb.SymbNode* %27, i32 0, i32 7
	%29 = load %symb.SymbNode** %28
	%30 = bitcast %symb.SymbNode* %29 to %symb.SymbNode*
	call void @llvm_Section(%symb.SymbNode* %30, i8 1)
	br label %L.1
L.1:
	%31 = load %bout.BufIO** @llvm_f
	%32 = bitcast %bout.BufIO* %31 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %32)
	br label %return
return:
	ret void
}
@S.722 = internal constant [27 x i8] c"%S = internal constant %K \00"
define internal void @llvm_DclAggregate(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%0 = load %ast.AstNode** %node
	call void @llvm_ConstScan(%ast.AstNode* %0)
	%1 = getelementptr [27 x i8]* @S.722
	%2 = bitcast [27 x i8]* %1 to [0 x i8]*
	%3 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %2, %ast.AstNode* %3)
	%4 = load %ast.AstNode** %node
	call void @llvm_Constant(%ast.AstNode* %4)
	%5 = load %bout.BufIO** @llvm_f
	%6 = bitcast %bout.BufIO* %5 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %6)
	br label %return
return:
	ret void
}
@S.723 = internal constant [3 x i8] c"L.\00"
define internal void @llvm_PLabel(i16 zeroext %n$) nounwind {
L.0:
	%n = alloca i16
	store i16 %n$, i16* %n
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = getelementptr [3 x i8]* @S.723
	%3 = bitcast [3 x i8]* %2 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %1, [0 x i8]* %3)
	%4 = load %bout.BufIO** @llvm_f
	%5 = bitcast %bout.BufIO* %4 to %bout.BufIO*
	%6 = load i16* %n
	%7 = zext i16 %6 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %5, i32 %7)
	br label %return
return:
	ret void
}
@S.724 = internal constant [3 x i8] c":\0A\00"
define internal void @llvm_Label(i16 zeroext %n$) nounwind {
L.0:
	%n = alloca i16
	store i16 %n$, i16* %n
	%0 = load i16* %n
	call void @llvm_PLabel(i16 %0)
	%1 = load %bout.BufIO** @llvm_f
	%2 = bitcast %bout.BufIO* %1 to %bout.BufIO*
	%3 = getelementptr [3 x i8]* @S.724
	%4 = bitcast [3 x i8]* %3 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %2, [0 x i8]* %4)
	%5 = load i16* %n
	store i16 %5, i16* @llvm_labthis
	br label %return
return:
	ret void
}
@S.725 = internal constant [8 x i8] c"label %\00"
define internal void @llvm_RefLabel(i16 zeroext %n$) nounwind {
L.0:
	%n = alloca i16
	store i16 %n$, i16* %n
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = getelementptr [8 x i8]* @S.725
	%3 = bitcast [8 x i8]* %2 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %1, [0 x i8]* %3)
	%4 = load i16* %n
	call void @llvm_PLabel(i16 %4)
	br label %return
return:
	ret void
}
@S.726 = internal constant [5 x i8] c"\09br \00"
define internal void @llvm_Branch(i16 zeroext %n$) nounwind {
L.0:
	%n = alloca i16
	store i16 %n$, i16* %n
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = getelementptr [5 x i8]* @S.726
	%3 = bitcast [5 x i8]* %2 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %1, [0 x i8]* %3)
	%4 = load i16* %n
	call void @llvm_RefLabel(i16 %4)
	%5 = load %bout.BufIO** @llvm_f
	%6 = bitcast %bout.BufIO* %5 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %6)
	br label %return
return:
	ret void
}
@S.727 = internal constant [8 x i8] c"\09br i1 \00"
@S.728 = internal constant [3 x i8] c", \00"
@S.729 = internal constant [3 x i8] c", \00"
define internal void @llvm_BranchConditional(%ast.AstNode* %node$, i16 zeroext %ntrue$, i16 zeroext %nfalse$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	%ntrue = alloca i16
	%nfalse = alloca i16
	store %ast.AstNode* %node$, %ast.AstNode** %node
	store i16 %ntrue$, i16* %ntrue
	store i16 %nfalse$, i16* %nfalse
	%0 = load %bout.BufIO** @llvm_f
	%1 = bitcast %bout.BufIO* %0 to %bout.BufIO*
	%2 = getelementptr [8 x i8]* @S.727
	%3 = bitcast [8 x i8]* %2 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %1, [0 x i8]* %3)
	%4 = load %ast.AstNode** %node
	call void @llvm_NodeSrc(%ast.AstNode* %4)
	%5 = load %bout.BufIO** @llvm_f
	%6 = bitcast %bout.BufIO* %5 to %bout.BufIO*
	%7 = getelementptr [3 x i8]* @S.728
	%8 = bitcast [3 x i8]* %7 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %6, [0 x i8]* %8)
	%9 = load i16* %ntrue
	call void @llvm_RefLabel(i16 %9)
	%10 = load %bout.BufIO** @llvm_f
	%11 = bitcast %bout.BufIO* %10 to %bout.BufIO*
	%12 = getelementptr [3 x i8]* @S.729
	%13 = bitcast [3 x i8]* %12 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %11, [0 x i8]* %13)
	%14 = load i16* %nfalse
	call void @llvm_RefLabel(i16 %14)
	%15 = load %ast.AstNode** %node
	call void @llvm_PEndLine(%ast.AstNode* %15)
	br label %return
return:
	ret void
}
define internal zeroext i8 @llvm_If(%ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca i8
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%labend = alloca i16
	%labtrue = alloca i16
	%labfalse = alloca i16
	%term = alloca i8
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 11
	%2 = getelementptr [0 x %ast.AstNode*]* %1, i32 0, i32 0
	%3 = load %ast.AstNode** %2
	%4 = bitcast %ast.AstNode* %3 to %ast.AstNode*
	%5 = call i8 @llvm_GenSub(%ast.AstNode* %4)
	%6 = load i16* @llvm_Lseqno
	store i16 %6, i16* %labend
	%7 = load i16* @llvm_Lseqno
	%8 = add i16 %7, 1
	store i16 %8, i16* @llvm_Lseqno
	%9 = load i16* @llvm_Lseqno
	store i16 %9, i16* %labtrue
	%10 = load i16* @llvm_Lseqno
	%11 = add i16 %10, 1
	store i16 %11, i16* @llvm_Lseqno
	%12 = load %ast.AstNode** %node
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 11
	%14 = getelementptr [0 x %ast.AstNode*]* %13, i32 0, i32 2
	%15 = load %ast.AstNode** %14
	%16 = icmp ne %ast.AstNode* %15, null
	br i1 %16, label %L.2, label %L.3
L.2:
	%17 = load i16* @llvm_Lseqno
	store i16 %17, i16* %labfalse
	%18 = load i16* @llvm_Lseqno
	%19 = add i16 %18, 1
	store i16 %19, i16* @llvm_Lseqno
	br label %L.1
L.3:
	%20 = load i16* %labend
	store i16 %20, i16* %labfalse
	br label %L.1
L.1:
	%21 = load %ast.AstNode** %node
	%22 = getelementptr %ast.AstNode* %21, i32 0, i32 11
	%23 = getelementptr [0 x %ast.AstNode*]* %22, i32 0, i32 0
	%24 = load %ast.AstNode** %23
	%25 = bitcast %ast.AstNode* %24 to %ast.AstNode*
	%26 = load i16* %labtrue
	%27 = load i16* %labfalse
	call void @llvm_BranchConditional(%ast.AstNode* %25, i16 %26, i16 %27)
	%28 = load i16* %labtrue
	call void @llvm_Label(i16 %28)
	%29 = load %ast.AstNode** %node
	%30 = getelementptr %ast.AstNode* %29, i32 0, i32 11
	%31 = getelementptr [0 x %ast.AstNode*]* %30, i32 0, i32 1
	%32 = load %ast.AstNode** %31
	%33 = bitcast %ast.AstNode* %32 to %ast.AstNode*
	%34 = call i8 @llvm_GenSub(%ast.AstNode* %33)
	store i8 %34, i8* %term
	%35 = load i8* %term
	%36 = icmp ne i8 %35, 0
	%37 = xor i1 %36, true
	br i1 %37, label %L.5, label %L.4
L.5:
	%38 = load i16* %labend
	call void @llvm_Branch(i16 %38)
	br label %L.4
L.4:
	%39 = load %ast.AstNode** %node
	%40 = getelementptr %ast.AstNode* %39, i32 0, i32 11
	%41 = getelementptr [0 x %ast.AstNode*]* %40, i32 0, i32 2
	%42 = load %ast.AstNode** %41
	%43 = icmp ne %ast.AstNode* %42, null
	br i1 %43, label %L.7, label %L.6
L.7:
	%44 = load i16* %labfalse
	call void @llvm_Label(i16 %44)
	%45 = load %ast.AstNode** %node
	%46 = getelementptr %ast.AstNode* %45, i32 0, i32 11
	%47 = getelementptr [0 x %ast.AstNode*]* %46, i32 0, i32 2
	%48 = load %ast.AstNode** %47
	%49 = bitcast %ast.AstNode* %48 to %ast.AstNode*
	%50 = call i8 @llvm_GenSub(%ast.AstNode* %49)
	store i8 %50, i8* %term
	%51 = load i8* %term
	%52 = icmp ne i8 %51, 0
	%53 = xor i1 %52, true
	br i1 %53, label %L.9, label %L.8
L.9:
	%54 = load i16* %labend
	call void @llvm_Branch(i16 %54)
	br label %L.8
L.8:
	br label %L.6
L.6:
	%55 = load i16* %labend
	call void @llvm_Label(i16 %55)
	store i8 0, i8* %rv.0
	br label %return
return:
	%56 = load i8* %rv.0
	ret i8 %56
}
@S.730 = internal constant [16 x i8] c"\09switch %T %N, \00"
@S.731 = internal constant [4 x i8] c" [\0A\00"
@S.732 = internal constant [7 x i8] c"\09\09%0T \00"
@S.733 = internal constant [3 x i8] c", \00"
@S.734 = internal constant [4 x i8] c"\09]\0A\00"
define internal zeroext i8 @llvm_Select(%ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca i8
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%i = alloca i16
	%j = alloca i16
	%isnode = alloca %ast.AstNode*
	%selnode = alloca %ast.AstNode*
	%labend = alloca i16
	%labelse = alloca i16
	%lo = alloca i64
	%hi = alloca i64
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 11
	%2 = getelementptr [0 x %ast.AstNode*]* %1, i32 0, i32 0
	%3 = load %ast.AstNode** %2
	%4 = bitcast %ast.AstNode* %3 to %ast.AstNode*
	%5 = load %type.TypeNode** @type_wordtype
	%6 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %4, %type.TypeNode* %5)
	%7 = bitcast %ast.AstNode* %6 to %ast.AstNode*
	%8 = load %ast.AstNode** %node
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 11
	%10 = getelementptr [0 x %ast.AstNode*]* %9, i32 0, i32 0
	store %ast.AstNode* %7, %ast.AstNode** %10
	%11 = load %ast.AstNode** %node
	%12 = getelementptr %ast.AstNode* %11, i32 0, i32 11
	%13 = getelementptr [0 x %ast.AstNode*]* %12, i32 0, i32 0
	%14 = load %ast.AstNode** %13
	%15 = bitcast %ast.AstNode* %14 to %ast.AstNode*
	%16 = call i8 @llvm_GenSub(%ast.AstNode* %15)
	%17 = load i16* @llvm_Lseqno
	store i16 %17, i16* %labelse
	%18 = load i16* @llvm_Lseqno
	%19 = add i16 %18, 1
	store i16 %19, i16* @llvm_Lseqno
	%20 = load i16* @llvm_Lseqno
	store i16 %20, i16* %labend
	%21 = load i16* @llvm_Lseqno
	%22 = add i16 %21, 1
	store i16 %22, i16* @llvm_Lseqno
	%23 = getelementptr [16 x i8]* @S.730
	%24 = bitcast [16 x i8]* %23 to [0 x i8]*
	%25 = load %ast.AstNode** %node
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 11
	%27 = getelementptr [0 x %ast.AstNode*]* %26, i32 0, i32 0
	%28 = load %ast.AstNode** %27
	%29 = bitcast %ast.AstNode* %28 to %ast.AstNode*
	call void @llvm_Print([0 x i8]* %24, %ast.AstNode* %29)
	%30 = load i16* %labelse
	call void @llvm_RefLabel(i16 %30)
	%31 = load %bout.BufIO** @llvm_f
	%32 = bitcast %bout.BufIO* %31 to %bout.BufIO*
	%33 = getelementptr [4 x i8]* @S.731
	%34 = bitcast [4 x i8]* %33 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %32, [0 x i8]* %34)
	store i16 1, i16* %i
	br label %L.1
L.1:
	%35 = load i16* %i
	%36 = load %ast.AstNode** %node
	%37 = getelementptr %ast.AstNode* %36, i32 0, i32 2
	%38 = load i16* %37
	%39 = sub i16 %38, 1
	%40 = icmp ult i16 %35, %39
	%41 = xor i1 %40, true
	br i1 %41, label %L.2, label %L.3
L.3:
	%42 = load %ast.AstNode** %node
	%43 = getelementptr %ast.AstNode* %42, i32 0, i32 11
	%44 = load i16* %i
	%45 = zext i16 %44 to i32
	%46 = getelementptr [0 x %ast.AstNode*]* %43, i32 0, i32 %45
	%47 = load %ast.AstNode** %46
	%48 = bitcast %ast.AstNode* %47 to %ast.AstNode*
	store %ast.AstNode* %48, %ast.AstNode** %isnode
	%49 = load %ast.AstNode** %isnode
	%50 = getelementptr %ast.AstNode* %49, i32 0, i32 0
	%51 = load i8* %50
	%52 = icmp eq i8 %51, 89
	br i1 %52, label %L.5, label %L.4
L.5:
	%53 = load i16* @llvm_Lseqno
	%54 = load %ast.AstNode** %isnode
	%55 = getelementptr %ast.AstNode* %54, i32 0, i32 6
	store i16 %53, i16* %55
	%56 = load i16* @llvm_Lseqno
	%57 = add i16 %56, 1
	store i16 %57, i16* @llvm_Lseqno
	store i16 0, i16* %j
	br label %L.6
L.6:
	%58 = load i16* %j
	%59 = load %ast.AstNode** %isnode
	%60 = getelementptr %ast.AstNode* %59, i32 0, i32 2
	%61 = load i16* %60
	%62 = sub i16 %61, 1
	%63 = icmp ult i16 %58, %62
	%64 = xor i1 %63, true
	br i1 %64, label %L.7, label %L.8
L.8:
	%65 = load %ast.AstNode** %isnode
	%66 = getelementptr %ast.AstNode* %65, i32 0, i32 11
	%67 = load i16* %j
	%68 = zext i16 %67 to i32
	%69 = getelementptr [0 x %ast.AstNode*]* %66, i32 0, i32 %68
	%70 = load %ast.AstNode** %69
	%71 = bitcast %ast.AstNode* %70 to %ast.AstNode*
	store %ast.AstNode* %71, %ast.AstNode** %selnode
	store i64 0, i64* %lo
	store i64 0, i64* %hi
	%72 = load %ast.AstNode** %selnode
	%73 = getelementptr %ast.AstNode* %72, i32 0, i32 0
	%74 = load i8* %73
	%75 = zext i8 %74 to i32
	switch i32 %75, label %L.9 [
		i32 7, label %L.11
		i32 11, label %L.12
	]
L.11:
	%76 = load %ast.AstNode** %selnode
	%77 = getelementptr %ast.AstNode* %76, i32 0, i32 10
	%78 = load i64* %77
	store i64 %78, i64* %lo
	%79 = load i64* %lo
	store i64 %79, i64* %hi
	br label %L.10
L.12:
	%80 = load %ast.AstNode** %selnode
	%81 = getelementptr %ast.AstNode* %80, i32 0, i32 11
	%82 = getelementptr [0 x %ast.AstNode*]* %81, i32 0, i32 0
	%83 = load %ast.AstNode** %82
	%84 = getelementptr %ast.AstNode* %83, i32 0, i32 0
	%85 = load i8* %84
	%86 = icmp eq i8 %85, 7
	br i1 %86, label %L.13, label %L.14
L.13:
	%87 = load %ast.AstNode** %selnode
	%88 = getelementptr %ast.AstNode* %87, i32 0, i32 11
	%89 = getelementptr [0 x %ast.AstNode*]* %88, i32 0, i32 1
	%90 = load %ast.AstNode** %89
	%91 = getelementptr %ast.AstNode* %90, i32 0, i32 0
	%92 = load i8* %91
	%93 = icmp eq i8 %92, 7
	br label %L.14
L.14:
	%94 = phi i1 [ false, %L.12 ], [ %93, %L.13 ]
	br i1 %94, label %L.16, label %L.15
L.16:
	%95 = load %ast.AstNode** %selnode
	%96 = getelementptr %ast.AstNode* %95, i32 0, i32 11
	%97 = getelementptr [0 x %ast.AstNode*]* %96, i32 0, i32 0
	%98 = load %ast.AstNode** %97
	%99 = getelementptr %ast.AstNode* %98, i32 0, i32 10
	%100 = load i64* %99
	store i64 %100, i64* %lo
	%101 = load %ast.AstNode** %selnode
	%102 = getelementptr %ast.AstNode* %101, i32 0, i32 11
	%103 = getelementptr [0 x %ast.AstNode*]* %102, i32 0, i32 1
	%104 = load %ast.AstNode** %103
	%105 = getelementptr %ast.AstNode* %104, i32 0, i32 10
	%106 = load i64* %105
	store i64 %106, i64* %hi
	br label %L.15
L.15:
	br label %L.10
L.9:
	br label %L.10
L.10:
	br label %L.17
L.17:
	%107 = load i64* %lo
	%108 = load i64* %hi
	%109 = icmp ule i64 %107, %108
	%110 = xor i1 %109, true
	br i1 %110, label %L.18, label %L.19
L.19:
	%111 = getelementptr [7 x i8]* @S.732
	%112 = bitcast [7 x i8]* %111 to [0 x i8]*
	%113 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %112, %ast.AstNode* %113)
	%114 = load %bout.BufIO** @llvm_f
	%115 = bitcast %bout.BufIO* %114 to %bout.BufIO*
	%116 = load i64* %lo
	%117 = trunc i64 %116 to i32
	call void @bout_BufIO_uint32(%bout.BufIO* %115, i32 %117)
	%118 = load %bout.BufIO** @llvm_f
	%119 = bitcast %bout.BufIO* %118 to %bout.BufIO*
	%120 = getelementptr [3 x i8]* @S.733
	%121 = bitcast [3 x i8]* %120 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %119, [0 x i8]* %121)
	%122 = load %ast.AstNode** %isnode
	%123 = getelementptr %ast.AstNode* %122, i32 0, i32 6
	%124 = load i16* %123
	call void @llvm_RefLabel(i16 %124)
	%125 = load %bout.BufIO** @llvm_f
	%126 = bitcast %bout.BufIO* %125 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %126)
	%127 = load i64* %lo
	%128 = add i64 %127, 1
	store i64 %128, i64* %lo
	br label %L.17
L.18:
	%129 = load i16* %j
	%130 = add i16 %129, 1
	store i16 %130, i16* %j
	br label %L.6
L.7:
	br label %L.4
L.4:
	%131 = load i16* %i
	%132 = add i16 %131, 1
	store i16 %132, i16* %i
	br label %L.1
L.2:
	%133 = load %bout.BufIO** @llvm_f
	%134 = bitcast %bout.BufIO* %133 to %bout.BufIO*
	%135 = getelementptr [4 x i8]* @S.734
	%136 = bitcast [4 x i8]* %135 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %134, [0 x i8]* %136)
	store i16 1, i16* %i
	br label %L.20
L.20:
	%137 = load i16* %i
	%138 = load %ast.AstNode** %node
	%139 = getelementptr %ast.AstNode* %138, i32 0, i32 2
	%140 = load i16* %139
	%141 = sub i16 %140, 1
	%142 = icmp ult i16 %137, %141
	%143 = xor i1 %142, true
	br i1 %143, label %L.21, label %L.22
L.22:
	%144 = load %ast.AstNode** %node
	%145 = getelementptr %ast.AstNode* %144, i32 0, i32 11
	%146 = load i16* %i
	%147 = zext i16 %146 to i32
	%148 = getelementptr [0 x %ast.AstNode*]* %145, i32 0, i32 %147
	%149 = load %ast.AstNode** %148
	%150 = bitcast %ast.AstNode* %149 to %ast.AstNode*
	store %ast.AstNode* %150, %ast.AstNode** %isnode
	%151 = load %ast.AstNode** %isnode
	%152 = getelementptr %ast.AstNode* %151, i32 0, i32 6
	%153 = load i16* %152
	call void @llvm_Label(i16 %153)
	%154 = load %ast.AstNode** %isnode
	%155 = getelementptr %ast.AstNode* %154, i32 0, i32 11
	%156 = load %ast.AstNode** %isnode
	%157 = getelementptr %ast.AstNode* %156, i32 0, i32 2
	%158 = load i16* %157
	%159 = sub i16 %158, 1
	%160 = zext i16 %159 to i32
	%161 = getelementptr [0 x %ast.AstNode*]* %155, i32 0, i32 %160
	%162 = load %ast.AstNode** %161
	%163 = bitcast %ast.AstNode* %162 to %ast.AstNode*
	%164 = call i8 @llvm_GenSub(%ast.AstNode* %163)
	%165 = icmp ne i8 %164, 0
	%166 = xor i1 %165, true
	br i1 %166, label %L.24, label %L.23
L.24:
	%167 = load i16* %labend
	call void @llvm_Branch(i16 %167)
	br label %L.23
L.23:
	%168 = load i16* %i
	%169 = add i16 %168, 1
	store i16 %169, i16* %i
	br label %L.20
L.21:
	%170 = load i16* %labelse
	call void @llvm_Label(i16 %170)
	%171 = load %ast.AstNode** %node
	%172 = getelementptr %ast.AstNode* %171, i32 0, i32 11
	%173 = load %ast.AstNode** %node
	%174 = getelementptr %ast.AstNode* %173, i32 0, i32 2
	%175 = load i16* %174
	%176 = sub i16 %175, 1
	%177 = zext i16 %176 to i32
	%178 = getelementptr [0 x %ast.AstNode*]* %172, i32 0, i32 %177
	%179 = load %ast.AstNode** %178
	%180 = bitcast %ast.AstNode* %179 to %ast.AstNode*
	%181 = call i8 @llvm_GenSub(%ast.AstNode* %180)
	%182 = icmp ne i8 %181, 0
	%183 = xor i1 %182, true
	br i1 %183, label %L.26, label %L.25
L.26:
	%184 = load i16* %labend
	call void @llvm_Branch(i16 %184)
	br label %L.25
L.25:
	%185 = load i16* %labend
	call void @llvm_Label(i16 %185)
	store i8 0, i8* %rv.0
	br label %return
return:
	%186 = load i8* %rv.0
	ret i8 %186
}
define internal zeroext i8 @llvm_Loop(%ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca i8
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%loopcont = alloca i16
	%saveexit = alloca i16
	%0 = load i16* @llvm_loopexit
	store i16 %0, i16* %saveexit
	%1 = load i16* @llvm_Lseqno
	store i16 %1, i16* %loopcont
	%2 = load i16* @llvm_Lseqno
	%3 = add i16 %2, 1
	store i16 %3, i16* @llvm_Lseqno
	%4 = load i16* @llvm_Lseqno
	store i16 %4, i16* @llvm_loopexit
	%5 = load i16* @llvm_Lseqno
	%6 = add i16 %5, 1
	store i16 %6, i16* @llvm_Lseqno
	%7 = load i16* %loopcont
	call void @llvm_Branch(i16 %7)
	%8 = load i16* %loopcont
	call void @llvm_Label(i16 %8)
	%9 = load %ast.AstNode** %node
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 11
	%11 = getelementptr [0 x %ast.AstNode*]* %10, i32 0, i32 0
	%12 = load %ast.AstNode** %11
	%13 = bitcast %ast.AstNode* %12 to %ast.AstNode*
	%14 = call i8 @llvm_GenSub(%ast.AstNode* %13)
	%15 = load i16* %loopcont
	call void @llvm_Branch(i16 %15)
	%16 = load i16* @llvm_loopexit
	call void @llvm_Label(i16 %16)
	%17 = load i16* %saveexit
	store i16 %17, i16* @llvm_loopexit
	store i8 0, i8* %rv.0
	br label %return
return:
	%18 = load i8* %rv.0
	ret i8 %18
}
define internal zeroext i8 @llvm_Exit(%ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca i8
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%labtrue = alloca i16
	%labfalse = alloca i16
	%term = alloca i8
	%0 = load i16* @llvm_Lseqno
	store i16 %0, i16* %labfalse
	%1 = load i16* @llvm_Lseqno
	%2 = add i16 %1, 1
	store i16 %2, i16* @llvm_Lseqno
	%3 = load %ast.AstNode** %node
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 11
	%5 = getelementptr [0 x %ast.AstNode*]* %4, i32 0, i32 0
	%6 = load %ast.AstNode** %5
	%7 = bitcast %ast.AstNode* %6 to %ast.AstNode*
	%8 = call i8 @llvm_GenSub(%ast.AstNode* %7)
	%9 = load %ast.AstNode** %node
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 11
	%11 = getelementptr [0 x %ast.AstNode*]* %10, i32 0, i32 1
	%12 = load %ast.AstNode** %11
	%13 = icmp ne %ast.AstNode* %12, null
	br i1 %13, label %L.2, label %L.3
L.2:
	%14 = load i16* @llvm_Lseqno
	store i16 %14, i16* %labtrue
	%15 = load i16* @llvm_Lseqno
	%16 = add i16 %15, 1
	store i16 %16, i16* @llvm_Lseqno
	%17 = load %ast.AstNode** %node
	%18 = getelementptr %ast.AstNode* %17, i32 0, i32 11
	%19 = getelementptr [0 x %ast.AstNode*]* %18, i32 0, i32 0
	%20 = load %ast.AstNode** %19
	%21 = bitcast %ast.AstNode* %20 to %ast.AstNode*
	%22 = load i16* %labtrue
	%23 = load i16* %labfalse
	call void @llvm_BranchConditional(%ast.AstNode* %21, i16 %22, i16 %23)
	%24 = load i16* %labtrue
	call void @llvm_Label(i16 %24)
	%25 = load %ast.AstNode** %node
	%26 = getelementptr %ast.AstNode* %25, i32 0, i32 11
	%27 = getelementptr [0 x %ast.AstNode*]* %26, i32 0, i32 1
	%28 = load %ast.AstNode** %27
	%29 = bitcast %ast.AstNode* %28 to %ast.AstNode*
	%30 = call i8 @llvm_GenSub(%ast.AstNode* %29)
	store i8 %30, i8* %term
	%31 = load i8* %term
	%32 = icmp ne i8 %31, 0
	%33 = xor i1 %32, true
	br i1 %33, label %L.5, label %L.4
L.5:
	%34 = load i16* @llvm_loopexit
	call void @llvm_Branch(i16 %34)
	br label %L.4
L.4:
	br label %L.1
L.3:
	%35 = load %ast.AstNode** %node
	%36 = getelementptr %ast.AstNode* %35, i32 0, i32 11
	%37 = getelementptr [0 x %ast.AstNode*]* %36, i32 0, i32 0
	%38 = load %ast.AstNode** %37
	%39 = bitcast %ast.AstNode* %38 to %ast.AstNode*
	%40 = load i16* @llvm_loopexit
	%41 = load i16* %labfalse
	call void @llvm_BranchConditional(%ast.AstNode* %39, i16 %40, i16 %41)
	br label %L.1
L.1:
	%42 = load i16* %labfalse
	call void @llvm_Label(i16 %42)
	store i8 0, i8* %rv.0
	br label %return
return:
	%43 = load i8* %rv.0
	ret i8 %43
}
@S.735 = internal constant [16 x i8] c"\09%N = phi i1 [ \00"
@S.736 = internal constant [6 x i8] c"false\00"
@S.737 = internal constant [5 x i8] c"true\00"
@S.738 = internal constant [4 x i8] c", %\00"
@S.739 = internal constant [7 x i8] c" ], [ \00"
@S.740 = internal constant [4 x i8] c", %\00"
@S.741 = internal constant [4 x i8] c" ]\0A\00"
define internal zeroext i8 @llvm_Conditional(%ast.AstNode* %node$, i8 zeroext %isand$) nounwind {
L.0:
	%rv.0 = alloca i8
	%node = alloca %ast.AstNode*
	%isand = alloca i8
	store %ast.AstNode* %node$, %ast.AstNode** %node
	store i8 %isand$, i8* %isand
	%lablhs = alloca i16
	%labrhs = alloca i16
	%labend = alloca i16
	%0 = load i16* @llvm_Lseqno
	store i16 %0, i16* %labrhs
	%1 = load i16* @llvm_Lseqno
	%2 = add i16 %1, 1
	store i16 %2, i16* @llvm_Lseqno
	%3 = load i16* @llvm_Lseqno
	store i16 %3, i16* %labend
	%4 = load i16* @llvm_Lseqno
	%5 = add i16 %4, 1
	store i16 %5, i16* @llvm_Lseqno
	%6 = load %ast.AstNode** %node
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 11
	%8 = getelementptr [0 x %ast.AstNode*]* %7, i32 0, i32 0
	%9 = load %ast.AstNode** %8
	%10 = bitcast %ast.AstNode* %9 to %ast.AstNode*
	%11 = call i8 @llvm_GenSub(%ast.AstNode* %10)
	%12 = load i8* %isand
	%13 = icmp ne i8 %12, 0
	br i1 %13, label %L.2, label %L.3
L.2:
	%14 = load %ast.AstNode** %node
	%15 = getelementptr %ast.AstNode* %14, i32 0, i32 11
	%16 = getelementptr [0 x %ast.AstNode*]* %15, i32 0, i32 0
	%17 = load %ast.AstNode** %16
	%18 = bitcast %ast.AstNode* %17 to %ast.AstNode*
	%19 = load i16* %labrhs
	%20 = load i16* %labend
	call void @llvm_BranchConditional(%ast.AstNode* %18, i16 %19, i16 %20)
	br label %L.1
L.3:
	%21 = load %ast.AstNode** %node
	%22 = getelementptr %ast.AstNode* %21, i32 0, i32 11
	%23 = getelementptr [0 x %ast.AstNode*]* %22, i32 0, i32 0
	%24 = load %ast.AstNode** %23
	%25 = bitcast %ast.AstNode* %24 to %ast.AstNode*
	%26 = load i16* %labend
	%27 = load i16* %labrhs
	call void @llvm_BranchConditional(%ast.AstNode* %25, i16 %26, i16 %27)
	br label %L.1
L.1:
	%28 = load i16* @llvm_labthis
	store i16 %28, i16* %lablhs
	%29 = load i16* %labrhs
	call void @llvm_Label(i16 %29)
	%30 = load %ast.AstNode** %node
	%31 = getelementptr %ast.AstNode* %30, i32 0, i32 11
	%32 = getelementptr [0 x %ast.AstNode*]* %31, i32 0, i32 1
	%33 = load %ast.AstNode** %32
	%34 = bitcast %ast.AstNode* %33 to %ast.AstNode*
	%35 = call i8 @llvm_GenSub(%ast.AstNode* %34)
	%36 = load i16* @llvm_labthis
	store i16 %36, i16* %labrhs
	%37 = load i16* %labend
	call void @llvm_Branch(i16 %37)
	%38 = load i16* %labend
	call void @llvm_Label(i16 %38)
	%39 = load i16* @llvm_Tseqno
	%40 = load %ast.AstNode** %node
	%41 = getelementptr %ast.AstNode* %40, i32 0, i32 6
	store i16 %39, i16* %41
	%42 = load i16* @llvm_Tseqno
	%43 = add i16 %42, 1
	store i16 %43, i16* @llvm_Tseqno
	%44 = getelementptr [16 x i8]* @S.735
	%45 = bitcast [16 x i8]* %44 to [0 x i8]*
	%46 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %45, %ast.AstNode* %46)
	%47 = load i8* %isand
	%48 = icmp ne i8 %47, 0
	br i1 %48, label %L.5, label %L.6
L.5:
	%49 = load %bout.BufIO** @llvm_f
	%50 = bitcast %bout.BufIO* %49 to %bout.BufIO*
	%51 = getelementptr [6 x i8]* @S.736
	%52 = bitcast [6 x i8]* %51 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %50, [0 x i8]* %52)
	br label %L.4
L.6:
	%53 = load %bout.BufIO** @llvm_f
	%54 = bitcast %bout.BufIO* %53 to %bout.BufIO*
	%55 = getelementptr [5 x i8]* @S.737
	%56 = bitcast [5 x i8]* %55 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %54, [0 x i8]* %56)
	br label %L.4
L.4:
	%57 = load %bout.BufIO** @llvm_f
	%58 = bitcast %bout.BufIO* %57 to %bout.BufIO*
	%59 = getelementptr [4 x i8]* @S.738
	%60 = bitcast [4 x i8]* %59 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %58, [0 x i8]* %60)
	%61 = load i16* %lablhs
	call void @llvm_PLabel(i16 %61)
	%62 = load %bout.BufIO** @llvm_f
	%63 = bitcast %bout.BufIO* %62 to %bout.BufIO*
	%64 = getelementptr [7 x i8]* @S.739
	%65 = bitcast [7 x i8]* %64 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %63, [0 x i8]* %65)
	%66 = load %ast.AstNode** %node
	%67 = getelementptr %ast.AstNode* %66, i32 0, i32 11
	%68 = getelementptr [0 x %ast.AstNode*]* %67, i32 0, i32 1
	%69 = load %ast.AstNode** %68
	%70 = getelementptr %ast.AstNode* %69, i32 0, i32 6
	%71 = load i16* %70
	call void @llvm_PTempName(i16 %71)
	%72 = load %bout.BufIO** @llvm_f
	%73 = bitcast %bout.BufIO* %72 to %bout.BufIO*
	%74 = getelementptr [4 x i8]* @S.740
	%75 = bitcast [4 x i8]* %74 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %73, [0 x i8]* %75)
	%76 = load i16* %labrhs
	call void @llvm_PLabel(i16 %76)
	%77 = load %bout.BufIO** @llvm_f
	%78 = bitcast %bout.BufIO* %77 to %bout.BufIO*
	%79 = getelementptr [4 x i8]* @S.741
	%80 = bitcast [4 x i8]* %79 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %78, [0 x i8]* %80)
	store i8 0, i8* %rv.0
	br label %return
return:
	%81 = load i8* %rv.0
	ret i8 %81
}
@S.742 = internal constant [81 x i8] c"\09call void @llvm.memcpy.p0i8.p0i8.%2T(i8* %0N, i8* %1N, %2T %2N, i32 %3N, i1 0)\0A\00"
define internal void @llvm_Copy(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 11
	%2 = getelementptr [0 x %ast.AstNode*]* %1, i32 0, i32 0
	%3 = load %ast.AstNode** %2
	%4 = bitcast %ast.AstNode* %3 to %ast.AstNode*
	%5 = load %type.TypeNode** @llvm_pbytetype
	%6 = call %ast.AstNode* @ast_Cast(%ast.AstNode* %4, %type.TypeNode* %5)
	%7 = bitcast %ast.AstNode* %6 to %ast.AstNode*
	%8 = load %ast.AstNode** %node
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 11
	%10 = getelementptr [0 x %ast.AstNode*]* %9, i32 0, i32 0
	store %ast.AstNode* %7, %ast.AstNode** %10
	%11 = load %ast.AstNode** %node
	%12 = getelementptr %ast.AstNode* %11, i32 0, i32 11
	%13 = getelementptr [0 x %ast.AstNode*]* %12, i32 0, i32 1
	%14 = load %ast.AstNode** %13
	%15 = bitcast %ast.AstNode* %14 to %ast.AstNode*
	%16 = load %type.TypeNode** @llvm_pbytetype
	%17 = call %ast.AstNode* @ast_Cast(%ast.AstNode* %15, %type.TypeNode* %16)
	%18 = bitcast %ast.AstNode* %17 to %ast.AstNode*
	%19 = load %ast.AstNode** %node
	%20 = getelementptr %ast.AstNode* %19, i32 0, i32 11
	%21 = getelementptr [0 x %ast.AstNode*]* %20, i32 0, i32 1
	store %ast.AstNode* %18, %ast.AstNode** %21
	%22 = load %ast.AstNode** %node
	%23 = getelementptr %ast.AstNode* %22, i32 0, i32 11
	%24 = getelementptr [0 x %ast.AstNode*]* %23, i32 0, i32 0
	%25 = load %ast.AstNode** %24
	%26 = bitcast %ast.AstNode* %25 to %ast.AstNode*
	%27 = call i8 @llvm_GenSub(%ast.AstNode* %26)
	%28 = load %ast.AstNode** %node
	%29 = getelementptr %ast.AstNode* %28, i32 0, i32 11
	%30 = getelementptr [0 x %ast.AstNode*]* %29, i32 0, i32 1
	%31 = load %ast.AstNode** %30
	%32 = bitcast %ast.AstNode* %31 to %ast.AstNode*
	%33 = call i8 @llvm_GenSub(%ast.AstNode* %32)
	%34 = load %ast.AstNode** %node
	%35 = getelementptr %ast.AstNode* %34, i32 0, i32 11
	%36 = getelementptr [0 x %ast.AstNode*]* %35, i32 0, i32 2
	%37 = load %ast.AstNode** %36
	%38 = bitcast %ast.AstNode* %37 to %ast.AstNode*
	%39 = load %type.TypeNode** @type_wordtype
	%40 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %38, %type.TypeNode* %39)
	%41 = bitcast %ast.AstNode* %40 to %ast.AstNode*
	%42 = load %ast.AstNode** %node
	%43 = getelementptr %ast.AstNode* %42, i32 0, i32 11
	%44 = getelementptr [0 x %ast.AstNode*]* %43, i32 0, i32 2
	store %ast.AstNode* %41, %ast.AstNode** %44
	%45 = load %ast.AstNode** %node
	%46 = getelementptr %ast.AstNode* %45, i32 0, i32 11
	%47 = getelementptr [0 x %ast.AstNode*]* %46, i32 0, i32 2
	%48 = load %ast.AstNode** %47
	%49 = bitcast %ast.AstNode* %48 to %ast.AstNode*
	%50 = call i8 @llvm_GenSub(%ast.AstNode* %49)
	%51 = getelementptr [81 x i8]* @S.742
	%52 = bitcast [81 x i8]* %51 to [0 x i8]*
	%53 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %52, %ast.AstNode* %53)
	call void @llvm_UseIntrinsic(i8 0, i32 1, %type.TypeNode* null)
	br label %return
return:
	ret void
}
@S.743 = internal constant [75 x i8] c"\09call void @llvm.memset.p0i8.%W(i8* %0N, %1T %1N, %2T %2N, i32 %3N, i1 0)\0A\00"
define internal void @llvm_Set(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 11
	%2 = getelementptr [0 x %ast.AstNode*]* %1, i32 0, i32 0
	%3 = load %ast.AstNode** %2
	%4 = bitcast %ast.AstNode* %3 to %ast.AstNode*
	%5 = load %type.TypeNode** @llvm_pbytetype
	%6 = call %ast.AstNode* @ast_Cast(%ast.AstNode* %4, %type.TypeNode* %5)
	%7 = bitcast %ast.AstNode* %6 to %ast.AstNode*
	%8 = load %ast.AstNode** %node
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 11
	%10 = getelementptr [0 x %ast.AstNode*]* %9, i32 0, i32 0
	store %ast.AstNode* %7, %ast.AstNode** %10
	%11 = load %ast.AstNode** %node
	%12 = getelementptr %ast.AstNode* %11, i32 0, i32 11
	%13 = getelementptr [0 x %ast.AstNode*]* %12, i32 0, i32 0
	%14 = load %ast.AstNode** %13
	%15 = bitcast %ast.AstNode* %14 to %ast.AstNode*
	%16 = call i8 @llvm_GenSub(%ast.AstNode* %15)
	%17 = load %ast.AstNode** %node
	%18 = getelementptr %ast.AstNode* %17, i32 0, i32 11
	%19 = getelementptr [0 x %ast.AstNode*]* %18, i32 0, i32 1
	%20 = load %ast.AstNode** %19
	%21 = bitcast %ast.AstNode* %20 to %ast.AstNode*
	%22 = call i8 @llvm_GenSub(%ast.AstNode* %21)
	%23 = load %ast.AstNode** %node
	%24 = getelementptr %ast.AstNode* %23, i32 0, i32 11
	%25 = getelementptr [0 x %ast.AstNode*]* %24, i32 0, i32 2
	%26 = load %ast.AstNode** %25
	%27 = bitcast %ast.AstNode* %26 to %ast.AstNode*
	%28 = load %type.TypeNode** @type_wordtype
	%29 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %27, %type.TypeNode* %28)
	%30 = bitcast %ast.AstNode* %29 to %ast.AstNode*
	%31 = load %ast.AstNode** %node
	%32 = getelementptr %ast.AstNode* %31, i32 0, i32 11
	%33 = getelementptr [0 x %ast.AstNode*]* %32, i32 0, i32 2
	store %ast.AstNode* %30, %ast.AstNode** %33
	%34 = load %ast.AstNode** %node
	%35 = getelementptr %ast.AstNode* %34, i32 0, i32 11
	%36 = getelementptr [0 x %ast.AstNode*]* %35, i32 0, i32 2
	%37 = load %ast.AstNode** %36
	%38 = bitcast %ast.AstNode* %37 to %ast.AstNode*
	%39 = call i8 @llvm_GenSub(%ast.AstNode* %38)
	%40 = getelementptr [75 x i8]* @S.743
	%41 = bitcast [75 x i8]* %40 to [0 x i8]*
	%42 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %41, %ast.AstNode* %42)
	call void @llvm_UseIntrinsic(i8 2, i32 1, %type.TypeNode* null)
	br label %return
return:
	ret void
}
define internal zeroext i8 @llvm_GetChunkSize(i32 %size$, i32 %align$) nounwind {
L.0:
	%rv.0 = alloca i8
	%size = alloca i32
	%align = alloca i32
	store i32 %size$, i32* %size
	store i32 %align$, i32* %align
	%is = alloca i8
	%ia = alloca i8
	store i8 0, i8* %ia
	%0 = load i32* %align
	%1 = icmp ugt i32 %0, 0
	br i1 %1, label %L.2, label %L.1
L.2:
	br label %L.3
L.3:
	%2 = load i8* %ia
	%3 = load %target.ModelT** @target_Target
	%4 = getelementptr %target.ModelT* %3, i32 0, i32 5
	%5 = load i8* %4
	%6 = sub i8 %5, 1
	%7 = icmp ult i8 %2, %6
	br i1 %7, label %L.6, label %L.7
L.6:
	%8 = load i32* %align
	%9 = load %target.ModelT** @target_Target
	%10 = getelementptr %target.ModelT* %9, i32 0, i32 7
	%11 = load i8* %ia
	%12 = zext i8 %11 to i32
	%13 = getelementptr [6 x %target.SizeAlign]* %10, i32 0, i32 %12
	%14 = getelementptr %target.SizeAlign* %13, i32 0, i32 1
	%15 = load i8* %14
	%16 = zext i8 %15 to i32
	%17 = load %target.ModelT** @target_Target
	%18 = getelementptr %target.ModelT* %17, i32 0, i32 2
	%19 = load i8* %18
	%20 = zext i8 %19 to i32
	%21 = udiv i32 %16, %20
	%22 = icmp ugt i32 %8, %21
	br label %L.7
L.7:
	%23 = phi i1 [ false, %L.3 ], [ %22, %L.6 ]
	%24 = xor i1 %23, true
	br i1 %24, label %L.4, label %L.5
L.5:
	%25 = load i8* %ia
	%26 = add i8 %25, 1
	store i8 %26, i8* %ia
	br label %L.3
L.4:
	br label %L.1
L.1:
	%27 = load i8* %ia
	store i8 %27, i8* %is
	%28 = load i32* %size
	%29 = icmp ugt i32 %28, 0
	br i1 %29, label %L.9, label %L.8
L.9:
	store i8 0, i8* %is
	br label %L.10
L.10:
	%30 = load i8* %is
	%31 = load %target.ModelT** @target_Target
	%32 = getelementptr %target.ModelT* %31, i32 0, i32 5
	%33 = load i8* %32
	%34 = sub i8 %33, 1
	%35 = icmp ult i8 %30, %34
	br i1 %35, label %L.13, label %L.14
L.13:
	%36 = load i32* %size
	%37 = load %target.ModelT** @target_Target
	%38 = getelementptr %target.ModelT* %37, i32 0, i32 7
	%39 = load i8* %is
	%40 = zext i8 %39 to i32
	%41 = getelementptr [6 x %target.SizeAlign]* %38, i32 0, i32 %40
	%42 = getelementptr %target.SizeAlign* %41, i32 0, i32 0
	%43 = load i8* %42
	%44 = zext i8 %43 to i32
	%45 = load %target.ModelT** @target_Target
	%46 = getelementptr %target.ModelT* %45, i32 0, i32 2
	%47 = load i8* %46
	%48 = zext i8 %47 to i32
	%49 = udiv i32 %44, %48
	%50 = icmp ugt i32 %36, %49
	br label %L.14
L.14:
	%51 = phi i1 [ false, %L.10 ], [ %50, %L.13 ]
	%52 = xor i1 %51, true
	br i1 %52, label %L.11, label %L.12
L.12:
	%53 = load i8* %is
	%54 = add i8 %53, 1
	store i8 %54, i8* %is
	br label %L.10
L.11:
	br label %L.8
L.8:
	%55 = load i8* %ia
	%56 = load i8* %is
	%57 = icmp ult i8 %55, %56
	br i1 %57, label %L.16, label %L.15
L.16:
	%58 = load i8* %ia
	store i8 %58, i8* %is
	br label %L.15
L.15:
	%59 = load i8* %is
	store i8 %59, i8* %rv.0
	br label %return
return:
	%60 = load i8* %rv.0
	ret i8 %60
}
@S.744 = internal constant [28 x i8] c"\09%N = icmp eq %0T %0N, %1N\0A\00"
@S.745 = internal constant [28 x i8] c"\09%N = icmp ne %0T %0N, %1N\0A\00"
@S.746 = internal constant [54 x i8] c"\09%N = call i1 @memcmp%0*B(%0T %0N, %1T %1N, %2T %2N)\0A\00"
@S.747 = internal constant [24 x i8] c"\09%N = xor i1 %0N, true\0A\00"
define internal zeroext i8 @llvm_ArrayCompare(%ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca i8
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%length = alloca i32
	%align = alloca i32
	%size = alloca i32
	%i = alloca i8
	store i32 0, i32* %length
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 11
	%2 = getelementptr [0 x %ast.AstNode*]* %1, i32 0, i32 2
	%3 = load %ast.AstNode** %2
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 0
	%5 = load i8* %4
	%6 = icmp eq i8 %5, 7
	br i1 %6, label %L.2, label %L.1
L.2:
	%7 = load %ast.AstNode** %node
	%8 = getelementptr %ast.AstNode* %7, i32 0, i32 11
	%9 = getelementptr [0 x %ast.AstNode*]* %8, i32 0, i32 2
	%10 = load %ast.AstNode** %9
	%11 = getelementptr %ast.AstNode* %10, i32 0, i32 10
	%12 = load i64* %11
	%13 = trunc i64 %12 to i32
	%14 = load %ast.AstNode** %node
	%15 = getelementptr %ast.AstNode* %14, i32 0, i32 11
	%16 = getelementptr [0 x %ast.AstNode*]* %15, i32 0, i32 0
	%17 = load %ast.AstNode** %16
	%18 = getelementptr %ast.AstNode* %17, i32 0, i32 8
	%19 = load %type.TypeNode** %18
	%20 = getelementptr %type.TypeNode* %19, i32 0, i32 0
	%21 = load %type.TypeNode** %20
	%22 = getelementptr %type.TypeNode* %21, i32 0, i32 0
	%23 = load %type.TypeNode** %22
	%24 = getelementptr %type.TypeNode* %23, i32 0, i32 10
	%25 = load i32* %24
	%26 = load %target.ModelT** @target_Target
	%27 = getelementptr %target.ModelT* %26, i32 0, i32 2
	%28 = load i8* %27
	%29 = zext i8 %28 to i32
	%30 = udiv i32 %25, %29
	%31 = mul i32 %13, %30
	store i32 %31, i32* %length
	br label %L.1
L.1:
	%32 = load %ast.AstNode** %node
	%33 = getelementptr %ast.AstNode* %32, i32 0, i32 11
	%34 = getelementptr [0 x %ast.AstNode*]* %33, i32 0, i32 3
	%35 = load %ast.AstNode** %34
	%36 = getelementptr %ast.AstNode* %35, i32 0, i32 10
	%37 = load i64* %36
	%38 = trunc i64 %37 to i32
	store i32 %38, i32* %align
	%39 = load i32* %length
	%40 = load i32* %align
	%41 = call i8 @llvm_GetChunkSize(i32 %39, i32 %40)
	store i8 %41, i8* %i
	%42 = load %target.ModelT** @target_Target
	%43 = getelementptr %target.ModelT* %42, i32 0, i32 7
	%44 = load i8* %i
	%45 = zext i8 %44 to i32
	%46 = getelementptr [6 x %target.SizeAlign]* %43, i32 0, i32 %45
	%47 = getelementptr %target.SizeAlign* %46, i32 0, i32 0
	%48 = load i8* %47
	%49 = zext i8 %48 to i32
	%50 = load %target.ModelT** @target_Target
	%51 = getelementptr %target.ModelT* %50, i32 0, i32 2
	%52 = load i8* %51
	%53 = zext i8 %52 to i32
	%54 = udiv i32 %49, %53
	store i32 %54, i32* %size
	%55 = load %target.ModelT** @target_Target
	%56 = getelementptr %target.ModelT* %55, i32 0, i32 7
	%57 = load i8* %i
	%58 = zext i8 %57 to i32
	%59 = getelementptr [6 x %target.SizeAlign]* %56, i32 0, i32 %58
	%60 = getelementptr %target.SizeAlign* %59, i32 0, i32 1
	%61 = load i8* %60
	%62 = zext i8 %61 to i32
	%63 = load %target.ModelT** @target_Target
	%64 = getelementptr %target.ModelT* %63, i32 0, i32 2
	%65 = load i8* %64
	%66 = zext i8 %65 to i32
	%67 = udiv i32 %62, %66
	store i32 %67, i32* %align
	%68 = load i32* %length
	%69 = icmp ne i32 %68, 0
	br i1 %69, label %L.3, label %L.4
L.3:
	%70 = load i32* %length
	%71 = load i32* %size
	%72 = icmp ule i32 %70, %71
	br label %L.4
L.4:
	%73 = phi i1 [ false, %L.1 ], [ %72, %L.3 ]
	br i1 %73, label %L.6, label %L.7
L.6:
	%74 = load %ast.AstNode** %node
	%75 = getelementptr %ast.AstNode* %74, i32 0, i32 11
	%76 = getelementptr [0 x %ast.AstNode*]* %75, i32 0, i32 0
	%77 = load %ast.AstNode** %76
	%78 = bitcast %ast.AstNode* %77 to %ast.AstNode*
	%79 = load i8* %i
	%80 = zext i8 %79 to i32
	%81 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %80
	%82 = load %type.TypeNode** %81
	%83 = call %ast.AstNode* @ast_Cast(%ast.AstNode* %78, %type.TypeNode* %82)
	%84 = bitcast %ast.AstNode* %83 to %ast.AstNode*
	%85 = load %ast.AstNode** %node
	%86 = getelementptr %ast.AstNode* %85, i32 0, i32 11
	%87 = getelementptr [0 x %ast.AstNode*]* %86, i32 0, i32 0
	store %ast.AstNode* %84, %ast.AstNode** %87
	%88 = load i8* %i
	%89 = zext i8 %88 to i32
	%90 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %89
	%91 = load %type.TypeNode** %90
	%92 = getelementptr %type.TypeNode* %91, i32 0, i32 0
	%93 = load %type.TypeNode** %92
	%94 = getelementptr %type.TypeNode* %93, i32 0, i32 10
	%95 = load i32* %94
	%96 = load %ast.AstNode** %node
	%97 = getelementptr %ast.AstNode* %96, i32 0, i32 11
	%98 = getelementptr [0 x %ast.AstNode*]* %97, i32 0, i32 0
	%99 = load %ast.AstNode** %98
	%100 = getelementptr %ast.AstNode* %99, i32 0, i32 7
	store i32 %95, i32* %100
	%101 = load i8* %i
	%102 = zext i8 %101 to i32
	%103 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %102
	%104 = load %type.TypeNode** %103
	%105 = getelementptr %type.TypeNode* %104, i32 0, i32 0
	%106 = load %type.TypeNode** %105
	%107 = bitcast %type.TypeNode* %106 to %type.TypeNode*
	%108 = load %ast.AstNode** %node
	%109 = getelementptr %ast.AstNode* %108, i32 0, i32 11
	%110 = getelementptr [0 x %ast.AstNode*]* %109, i32 0, i32 0
	%111 = load %ast.AstNode** %110
	%112 = bitcast %ast.AstNode* %111 to %ast.AstNode*
	%113 = call %ast.AstNode* @ast_New1(i8 27, %type.TypeNode* %107, %ast.AstNode* %112)
	%114 = bitcast %ast.AstNode* %113 to %ast.AstNode*
	%115 = load %ast.AstNode** %node
	%116 = getelementptr %ast.AstNode* %115, i32 0, i32 11
	%117 = getelementptr [0 x %ast.AstNode*]* %116, i32 0, i32 0
	store %ast.AstNode* %114, %ast.AstNode** %117
	%118 = load %ast.AstNode** %node
	%119 = getelementptr %ast.AstNode* %118, i32 0, i32 11
	%120 = getelementptr [0 x %ast.AstNode*]* %119, i32 0, i32 1
	%121 = load %ast.AstNode** %120
	%122 = bitcast %ast.AstNode* %121 to %ast.AstNode*
	%123 = load i8* %i
	%124 = zext i8 %123 to i32
	%125 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %124
	%126 = load %type.TypeNode** %125
	%127 = call %ast.AstNode* @ast_Cast(%ast.AstNode* %122, %type.TypeNode* %126)
	%128 = bitcast %ast.AstNode* %127 to %ast.AstNode*
	%129 = load %ast.AstNode** %node
	%130 = getelementptr %ast.AstNode* %129, i32 0, i32 11
	%131 = getelementptr [0 x %ast.AstNode*]* %130, i32 0, i32 1
	store %ast.AstNode* %128, %ast.AstNode** %131
	%132 = load i8* %i
	%133 = zext i8 %132 to i32
	%134 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %133
	%135 = load %type.TypeNode** %134
	%136 = getelementptr %type.TypeNode* %135, i32 0, i32 0
	%137 = load %type.TypeNode** %136
	%138 = getelementptr %type.TypeNode* %137, i32 0, i32 10
	%139 = load i32* %138
	%140 = load %ast.AstNode** %node
	%141 = getelementptr %ast.AstNode* %140, i32 0, i32 11
	%142 = getelementptr [0 x %ast.AstNode*]* %141, i32 0, i32 1
	%143 = load %ast.AstNode** %142
	%144 = getelementptr %ast.AstNode* %143, i32 0, i32 7
	store i32 %139, i32* %144
	%145 = load i8* %i
	%146 = zext i8 %145 to i32
	%147 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %146
	%148 = load %type.TypeNode** %147
	%149 = getelementptr %type.TypeNode* %148, i32 0, i32 0
	%150 = load %type.TypeNode** %149
	%151 = bitcast %type.TypeNode* %150 to %type.TypeNode*
	%152 = load %ast.AstNode** %node
	%153 = getelementptr %ast.AstNode* %152, i32 0, i32 11
	%154 = getelementptr [0 x %ast.AstNode*]* %153, i32 0, i32 1
	%155 = load %ast.AstNode** %154
	%156 = bitcast %ast.AstNode* %155 to %ast.AstNode*
	%157 = call %ast.AstNode* @ast_New1(i8 27, %type.TypeNode* %151, %ast.AstNode* %156)
	%158 = bitcast %ast.AstNode* %157 to %ast.AstNode*
	%159 = load %ast.AstNode** %node
	%160 = getelementptr %ast.AstNode* %159, i32 0, i32 11
	%161 = getelementptr [0 x %ast.AstNode*]* %160, i32 0, i32 1
	store %ast.AstNode* %158, %ast.AstNode** %161
	%162 = load i32* %length
	%163 = load i32* %size
	%164 = icmp ult i32 %162, %163
	br i1 %164, label %L.9, label %L.8
L.9:
	%mask = alloca i64
	%165 = load %target.ModelT** @target_Target
	%166 = getelementptr %target.ModelT* %165, i32 0, i32 0
	%167 = load i8* %166
	%168 = icmp eq i8 %167, 1
	br i1 %168, label %L.11, label %L.12
L.11:
	%169 = load i32* %size
	%170 = zext i32 %169 to i64
	%171 = load i32* %length
	%172 = zext i32 %171 to i64
	%173 = sub i64 %170, %172
	%174 = mul i64 %173, 8
	%175 = shl i64 1, %174
	%176 = sub i64 %175, 1
	%177 = xor i64 %176, -1
	store i64 %177, i64* %mask
	br label %L.10
L.12:
	%178 = load i32* %length
	%179 = zext i32 %178 to i64
	%180 = mul i64 %179, 8
	%181 = shl i64 1, %180
	%182 = sub i64 %181, 1
	store i64 %182, i64* %mask
	br label %L.10
L.10:
	%183 = load i8* %i
	%184 = zext i8 %183 to i32
	%185 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %184
	%186 = load %type.TypeNode** %185
	%187 = getelementptr %type.TypeNode* %186, i32 0, i32 0
	%188 = load %type.TypeNode** %187
	%189 = bitcast %type.TypeNode* %188 to %type.TypeNode*
	%190 = load %ast.AstNode** %node
	%191 = getelementptr %ast.AstNode* %190, i32 0, i32 11
	%192 = getelementptr [0 x %ast.AstNode*]* %191, i32 0, i32 0
	%193 = load %ast.AstNode** %192
	%194 = bitcast %ast.AstNode* %193 to %ast.AstNode*
	%195 = load %ast.AstNode** %node
	%196 = getelementptr %ast.AstNode* %195, i32 0, i32 11
	%197 = getelementptr [0 x %ast.AstNode*]* %196, i32 0, i32 1
	%198 = load %ast.AstNode** %197
	%199 = bitcast %ast.AstNode* %198 to %ast.AstNode*
	%200 = call %ast.AstNode* @ast_New2(i8 74, %type.TypeNode* %189, %ast.AstNode* %194, %ast.AstNode* %199)
	%201 = bitcast %ast.AstNode* %200 to %ast.AstNode*
	%202 = load %ast.AstNode** %node
	%203 = getelementptr %ast.AstNode* %202, i32 0, i32 11
	%204 = getelementptr [0 x %ast.AstNode*]* %203, i32 0, i32 0
	store %ast.AstNode* %201, %ast.AstNode** %204
	%205 = load i8* %i
	%206 = zext i8 %205 to i32
	%207 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %206
	%208 = load %type.TypeNode** %207
	%209 = getelementptr %type.TypeNode* %208, i32 0, i32 0
	%210 = load %type.TypeNode** %209
	%211 = bitcast %type.TypeNode* %210 to %type.TypeNode*
	%212 = load %ast.AstNode** %node
	%213 = getelementptr %ast.AstNode* %212, i32 0, i32 11
	%214 = getelementptr [0 x %ast.AstNode*]* %213, i32 0, i32 0
	%215 = load %ast.AstNode** %214
	%216 = bitcast %ast.AstNode* %215 to %ast.AstNode*
	%217 = load i8* %i
	%218 = zext i8 %217 to i32
	%219 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %218
	%220 = load %type.TypeNode** %219
	%221 = getelementptr %type.TypeNode* %220, i32 0, i32 0
	%222 = load %type.TypeNode** %221
	%223 = bitcast %type.TypeNode* %222 to %type.TypeNode*
	%224 = load i64* %mask
	%225 = call %ast.AstNode* @ast_Const(%type.TypeNode* %223, i64 %224)
	%226 = call %ast.AstNode* @ast_New2(i8 72, %type.TypeNode* %211, %ast.AstNode* %216, %ast.AstNode* %225)
	%227 = bitcast %ast.AstNode* %226 to %ast.AstNode*
	%228 = load %ast.AstNode** %node
	%229 = getelementptr %ast.AstNode* %228, i32 0, i32 11
	%230 = getelementptr [0 x %ast.AstNode*]* %229, i32 0, i32 0
	store %ast.AstNode* %227, %ast.AstNode** %230
	%231 = load i8* %i
	%232 = zext i8 %231 to i32
	%233 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %232
	%234 = load %type.TypeNode** %233
	%235 = getelementptr %type.TypeNode* %234, i32 0, i32 0
	%236 = load %type.TypeNode** %235
	%237 = bitcast %type.TypeNode* %236 to %type.TypeNode*
	%238 = call %ast.AstNode* @ast_Const(%type.TypeNode* %237, i64 0)
	%239 = bitcast %ast.AstNode* %238 to %ast.AstNode*
	%240 = load %ast.AstNode** %node
	%241 = getelementptr %ast.AstNode* %240, i32 0, i32 11
	%242 = getelementptr [0 x %ast.AstNode*]* %241, i32 0, i32 1
	store %ast.AstNode* %239, %ast.AstNode** %242
	br label %L.8
L.8:
	%243 = load %ast.AstNode** %node
	%244 = getelementptr %ast.AstNode* %243, i32 0, i32 11
	%245 = getelementptr [0 x %ast.AstNode*]* %244, i32 0, i32 0
	%246 = load %ast.AstNode** %245
	%247 = bitcast %ast.AstNode* %246 to %ast.AstNode*
	%248 = call i8 @llvm_GenSub(%ast.AstNode* %247)
	%249 = load %ast.AstNode** %node
	%250 = getelementptr %ast.AstNode* %249, i32 0, i32 11
	%251 = getelementptr [0 x %ast.AstNode*]* %250, i32 0, i32 1
	%252 = load %ast.AstNode** %251
	%253 = bitcast %ast.AstNode* %252 to %ast.AstNode*
	%254 = call i8 @llvm_GenSub(%ast.AstNode* %253)
	%255 = load i16* @llvm_Tseqno
	%256 = load %ast.AstNode** %node
	%257 = getelementptr %ast.AstNode* %256, i32 0, i32 6
	store i16 %255, i16* %257
	%258 = load i16* @llvm_Tseqno
	%259 = add i16 %258, 1
	store i16 %259, i16* @llvm_Tseqno
	%260 = load %ast.AstNode** %node
	%261 = getelementptr %ast.AstNode* %260, i32 0, i32 7
	store i32 1, i32* %261
	%262 = load %ast.AstNode** %node
	%263 = getelementptr %ast.AstNode* %262, i32 0, i32 0
	%264 = load i8* %263
	%265 = icmp eq i8 %264, 24
	br i1 %265, label %L.14, label %L.15
L.14:
	%266 = getelementptr [28 x i8]* @S.744
	%267 = bitcast [28 x i8]* %266 to [0 x i8]*
	%268 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %267, %ast.AstNode* %268)
	br label %L.13
L.15:
	%269 = getelementptr [28 x i8]* @S.745
	%270 = bitcast [28 x i8]* %269 to [0 x i8]*
	%271 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %270, %ast.AstNode* %271)
	br label %L.13
L.13:
	store i8 1, i8* %rv.0
	br label %return
L.7:
	%272 = load %ast.AstNode** %node
	%273 = getelementptr %ast.AstNode* %272, i32 0, i32 11
	%274 = getelementptr [0 x %ast.AstNode*]* %273, i32 0, i32 0
	%275 = load %ast.AstNode** %274
	%276 = bitcast %ast.AstNode* %275 to %ast.AstNode*
	%277 = load i8* %i
	%278 = zext i8 %277 to i32
	%279 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %278
	%280 = load %type.TypeNode** %279
	%281 = call %ast.AstNode* @ast_Cast(%ast.AstNode* %276, %type.TypeNode* %280)
	%282 = bitcast %ast.AstNode* %281 to %ast.AstNode*
	%283 = load %ast.AstNode** %node
	%284 = getelementptr %ast.AstNode* %283, i32 0, i32 11
	%285 = getelementptr [0 x %ast.AstNode*]* %284, i32 0, i32 0
	store %ast.AstNode* %282, %ast.AstNode** %285
	%286 = load i8* %i
	%287 = zext i8 %286 to i32
	%288 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %287
	%289 = load %type.TypeNode** %288
	%290 = getelementptr %type.TypeNode* %289, i32 0, i32 0
	%291 = load %type.TypeNode** %290
	%292 = getelementptr %type.TypeNode* %291, i32 0, i32 10
	%293 = load i32* %292
	%294 = load %ast.AstNode** %node
	%295 = getelementptr %ast.AstNode* %294, i32 0, i32 11
	%296 = getelementptr [0 x %ast.AstNode*]* %295, i32 0, i32 0
	%297 = load %ast.AstNode** %296
	%298 = getelementptr %ast.AstNode* %297, i32 0, i32 7
	store i32 %293, i32* %298
	%299 = load %ast.AstNode** %node
	%300 = getelementptr %ast.AstNode* %299, i32 0, i32 11
	%301 = getelementptr [0 x %ast.AstNode*]* %300, i32 0, i32 1
	%302 = load %ast.AstNode** %301
	%303 = bitcast %ast.AstNode* %302 to %ast.AstNode*
	%304 = load i8* %i
	%305 = zext i8 %304 to i32
	%306 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %305
	%307 = load %type.TypeNode** %306
	%308 = call %ast.AstNode* @ast_Cast(%ast.AstNode* %303, %type.TypeNode* %307)
	%309 = bitcast %ast.AstNode* %308 to %ast.AstNode*
	%310 = load %ast.AstNode** %node
	%311 = getelementptr %ast.AstNode* %310, i32 0, i32 11
	%312 = getelementptr [0 x %ast.AstNode*]* %311, i32 0, i32 1
	store %ast.AstNode* %309, %ast.AstNode** %312
	%313 = load i8* %i
	%314 = zext i8 %313 to i32
	%315 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %314
	%316 = load %type.TypeNode** %315
	%317 = getelementptr %type.TypeNode* %316, i32 0, i32 0
	%318 = load %type.TypeNode** %317
	%319 = getelementptr %type.TypeNode* %318, i32 0, i32 10
	%320 = load i32* %319
	%321 = load %ast.AstNode** %node
	%322 = getelementptr %ast.AstNode* %321, i32 0, i32 11
	%323 = getelementptr [0 x %ast.AstNode*]* %322, i32 0, i32 1
	%324 = load %ast.AstNode** %323
	%325 = getelementptr %ast.AstNode* %324, i32 0, i32 7
	store i32 %320, i32* %325
	%326 = load %ast.AstNode** %node
	%327 = getelementptr %ast.AstNode* %326, i32 0, i32 11
	%328 = getelementptr [0 x %ast.AstNode*]* %327, i32 0, i32 0
	%329 = load %ast.AstNode** %328
	%330 = bitcast %ast.AstNode* %329 to %ast.AstNode*
	%331 = call i8 @llvm_GenSub(%ast.AstNode* %330)
	%332 = load %ast.AstNode** %node
	%333 = getelementptr %ast.AstNode* %332, i32 0, i32 11
	%334 = getelementptr [0 x %ast.AstNode*]* %333, i32 0, i32 1
	%335 = load %ast.AstNode** %334
	%336 = bitcast %ast.AstNode* %335 to %ast.AstNode*
	%337 = call i8 @llvm_GenSub(%ast.AstNode* %336)
	%338 = load i32* %size
	%339 = icmp ugt i32 %338, 1
	br i1 %339, label %L.17, label %L.16
L.17:
	%340 = load %type.TypeNode** @type_wordtype
	%341 = load %ast.AstNode** %node
	%342 = getelementptr %ast.AstNode* %341, i32 0, i32 11
	%343 = getelementptr [0 x %ast.AstNode*]* %342, i32 0, i32 2
	%344 = load %ast.AstNode** %343
	%345 = bitcast %ast.AstNode* %344 to %ast.AstNode*
	%346 = load %type.TypeNode** @type_wordtype
	%347 = load i32* %size
	%348 = zext i32 %347 to i64
	%349 = call %ast.AstNode* @ast_Const(%type.TypeNode* %346, i64 %348)
	%350 = call %ast.AstNode* @ast_New2(i8 52, %type.TypeNode* %340, %ast.AstNode* %345, %ast.AstNode* %349)
	%351 = bitcast %ast.AstNode* %350 to %ast.AstNode*
	%352 = load %ast.AstNode** %node
	%353 = getelementptr %ast.AstNode* %352, i32 0, i32 11
	%354 = getelementptr [0 x %ast.AstNode*]* %353, i32 0, i32 2
	store %ast.AstNode* %351, %ast.AstNode** %354
	br label %L.16
L.16:
	%355 = load %ast.AstNode** %node
	%356 = getelementptr %ast.AstNode* %355, i32 0, i32 11
	%357 = getelementptr [0 x %ast.AstNode*]* %356, i32 0, i32 2
	%358 = load %ast.AstNode** %357
	%359 = bitcast %ast.AstNode* %358 to %ast.AstNode*
	%360 = load %type.TypeNode** @type_wordtype
	%361 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %359, %type.TypeNode* %360)
	%362 = bitcast %ast.AstNode* %361 to %ast.AstNode*
	%363 = load %ast.AstNode** %node
	%364 = getelementptr %ast.AstNode* %363, i32 0, i32 11
	%365 = getelementptr [0 x %ast.AstNode*]* %364, i32 0, i32 2
	store %ast.AstNode* %362, %ast.AstNode** %365
	%366 = load %ast.AstNode** %node
	%367 = getelementptr %ast.AstNode* %366, i32 0, i32 11
	%368 = getelementptr [0 x %ast.AstNode*]* %367, i32 0, i32 2
	%369 = load %ast.AstNode** %368
	%370 = bitcast %ast.AstNode* %369 to %ast.AstNode*
	%371 = call i8 @llvm_GenSub(%ast.AstNode* %370)
	%372 = load i16* @llvm_Tseqno
	%373 = load %ast.AstNode** %node
	%374 = getelementptr %ast.AstNode* %373, i32 0, i32 6
	store i16 %372, i16* %374
	%375 = load i16* @llvm_Tseqno
	%376 = add i16 %375, 1
	store i16 %376, i16* @llvm_Tseqno
	%377 = load %ast.AstNode** %node
	%378 = getelementptr %ast.AstNode* %377, i32 0, i32 7
	store i32 1, i32* %378
	%379 = getelementptr [54 x i8]* @S.746
	%380 = bitcast [54 x i8]* %379 to [0 x i8]*
	%381 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %380, %ast.AstNode* %381)
	%382 = load i32* %size
	%383 = load i8* %i
	%384 = zext i8 %383 to i32
	%385 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %384
	%386 = load %type.TypeNode** %385
	call void @llvm_UseIntrinsic(i8 3, i32 %382, %type.TypeNode* %386)
	%387 = load %ast.AstNode** %node
	%388 = getelementptr %ast.AstNode* %387, i32 0, i32 0
	%389 = load i8* %388
	%390 = icmp eq i8 %389, 25
	br i1 %390, label %L.19, label %L.18
L.19:
	%391 = load %ast.AstNode** %node
	%392 = getelementptr %ast.AstNode* %391, i32 0, i32 6
	%393 = load i16* %392
	%394 = load %ast.AstNode** %node
	%395 = getelementptr %ast.AstNode* %394, i32 0, i32 11
	%396 = getelementptr [0 x %ast.AstNode*]* %395, i32 0, i32 0
	%397 = load %ast.AstNode** %396
	%398 = getelementptr %ast.AstNode* %397, i32 0, i32 6
	store i16 %393, i16* %398
	%399 = load i16* @llvm_Tseqno
	%400 = load %ast.AstNode** %node
	%401 = getelementptr %ast.AstNode* %400, i32 0, i32 6
	store i16 %399, i16* %401
	%402 = load i16* @llvm_Tseqno
	%403 = add i16 %402, 1
	store i16 %403, i16* @llvm_Tseqno
	%404 = getelementptr [24 x i8]* @S.747
	%405 = bitcast [24 x i8]* %404 to [0 x i8]*
	%406 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %405, %ast.AstNode* %406)
	br label %L.18
L.18:
	br label %L.5
L.5:
	store i8 0, i8* %rv.0
	br label %return
return:
	%407 = load i8* %rv.0
	ret i8 %407
}
@S.748 = internal constant [36 x i8] c"\09%N = call %T @memlen%0*A(%0T %0N)\0A\00"
define internal void @llvm_ZLen(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%align = alloca i32
	%t = alloca %type.TypeNode*
	%at = alloca %type.TypeNode*
	%bt = alloca %type.TypeNode*
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 11
	%2 = getelementptr [0 x %ast.AstNode*]* %1, i32 0, i32 0
	%3 = load %ast.AstNode** %2
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 8
	%5 = load %type.TypeNode** %4
	%6 = getelementptr %type.TypeNode* %5, i32 0, i32 0
	%7 = load %type.TypeNode** %6
	%8 = bitcast %type.TypeNode* %7 to %type.TypeNode*
	store %type.TypeNode* %8, %type.TypeNode** %at
	%9 = load %type.TypeNode** %at
	%10 = getelementptr %type.TypeNode* %9, i32 0, i32 0
	%11 = load %type.TypeNode** %10
	%12 = bitcast %type.TypeNode* %11 to %type.TypeNode*
	store %type.TypeNode* %12, %type.TypeNode** %bt
	%13 = load %type.TypeNode** %bt
	%14 = call %type.TypeNode* @type_Clone(%type.TypeNode* %13)
	store %type.TypeNode* %14, %type.TypeNode** %t
	%15 = load %type.TypeNode** %at
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 11
	%17 = load i32* %16
	%18 = load %type.TypeNode** %t
	%19 = getelementptr %type.TypeNode* %18, i32 0, i32 11
	store i32 %17, i32* %19
	%20 = load %type.TypeNode** %t
	%21 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %20)
	store %type.TypeNode* %21, %type.TypeNode** %t
	%22 = load %ast.AstNode** %node
	%23 = getelementptr %ast.AstNode* %22, i32 0, i32 11
	%24 = getelementptr [0 x %ast.AstNode*]* %23, i32 0, i32 0
	%25 = load %ast.AstNode** %24
	%26 = bitcast %ast.AstNode* %25 to %ast.AstNode*
	%27 = load %type.TypeNode** %t
	%28 = call %ast.AstNode* @ast_Cast(%ast.AstNode* %26, %type.TypeNode* %27)
	%29 = bitcast %ast.AstNode* %28 to %ast.AstNode*
	%30 = load %ast.AstNode** %node
	%31 = getelementptr %ast.AstNode* %30, i32 0, i32 11
	%32 = getelementptr [0 x %ast.AstNode*]* %31, i32 0, i32 0
	store %ast.AstNode* %29, %ast.AstNode** %32
	%33 = load %ast.AstNode** %node
	%34 = getelementptr %ast.AstNode* %33, i32 0, i32 11
	%35 = getelementptr [0 x %ast.AstNode*]* %34, i32 0, i32 0
	%36 = load %ast.AstNode** %35
	%37 = bitcast %ast.AstNode* %36 to %ast.AstNode*
	%38 = call i8 @llvm_GenSub(%ast.AstNode* %37)
	%39 = load %type.TypeNode** %t
	%40 = load %ast.AstNode** %node
	%41 = getelementptr %ast.AstNode* %40, i32 0, i32 11
	%42 = getelementptr [0 x %ast.AstNode*]* %41, i32 0, i32 0
	%43 = load %ast.AstNode** %42
	%44 = getelementptr %ast.AstNode* %43, i32 0, i32 8
	store %type.TypeNode* %39, %type.TypeNode** %44
	%45 = load %ast.AstNode** %node
	%46 = getelementptr %ast.AstNode* %45, i32 0, i32 11
	%47 = getelementptr [0 x %ast.AstNode*]* %46, i32 0, i32 1
	%48 = load %ast.AstNode** %47
	%49 = getelementptr %ast.AstNode* %48, i32 0, i32 10
	%50 = load i64* %49
	%51 = trunc i64 %50 to i32
	store i32 %51, i32* %align
	%52 = load i16* @llvm_Tseqno
	%53 = load %ast.AstNode** %node
	%54 = getelementptr %ast.AstNode* %53, i32 0, i32 6
	store i16 %52, i16* %54
	%55 = load i16* @llvm_Tseqno
	%56 = add i16 %55, 1
	store i16 %56, i16* @llvm_Tseqno
	%57 = getelementptr [36 x i8]* @S.748
	%58 = bitcast [36 x i8]* %57 to [0 x i8]*
	%59 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %58, %ast.AstNode* %59)
	%60 = load i32* %align
	%61 = load %type.TypeNode** %t
	call void @llvm_UseIntrinsic(i8 4, i32 %60, %type.TypeNode* %61)
	br label %return
return:
	ret void
}
@S.749 = internal constant [22 x i8] c"\09%N = xor %0T %0N, -1\00"
@S.750 = internal constant [21 x i8] c"\09%N = sub %0T 0, %0N\00"
@S.751 = internal constant [24 x i8] c"\09%N = fsub %0T 0.0, %0N\00"
@S.752 = internal constant [26 x i8] c"\09%N = fpext %0T %0N to %T\00"
@S.753 = internal constant [28 x i8] c"\09%N = fptrunc %0T %0N to %T\00"
@S.754 = internal constant [27 x i8] c"\09%N = uitofp %0T %0N to %T\00"
@S.755 = internal constant [27 x i8] c"\09%N = sitofp %0T %0N to %T\00"
@S.756 = internal constant [27 x i8] c"\09%N = fptoui %0T %0N to %T\00"
@S.757 = internal constant [27 x i8] c"\09%N = fptosi %0T %0N to %T\00"
@S.758 = internal constant [37 x i8] c"\09%N = call %T @llvm.bswap.%T(%T %0N)\00"
@S.759 = internal constant [47 x i8] c"\09%N = call %T @llvm.ctlz.%T(%0T %0N, i1 false)\00"
@S.760 = internal constant [46 x i8] c"\09%N = call %T @llvm.ctlz.%T(%0T %0N, i1 true)\00"
@S.761 = internal constant [47 x i8] c"\09%N = call %T @llvm.cttz.%T(%0T %0N, i1 false)\00"
@S.762 = internal constant [46 x i8] c"\09%N = call %T @llvm.cttz.%T(%0T %0N, i1 true)\00"
@S.763 = internal constant [38 x i8] c"\09%N = call %T @llvm.ctpop.%T(%0T %0N)\00"
define internal zeroext i8 @llvm_UnaryOp(%ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca i8
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 11
	%2 = getelementptr [0 x %ast.AstNode*]* %1, i32 0, i32 0
	%3 = load %ast.AstNode** %2
	%4 = bitcast %ast.AstNode* %3 to %ast.AstNode*
	%5 = call i8 @llvm_GenSub(%ast.AstNode* %4)
	%6 = load i16* @llvm_Tseqno
	%7 = load %ast.AstNode** %node
	%8 = getelementptr %ast.AstNode* %7, i32 0, i32 6
	store i16 %6, i16* %8
	%9 = load i16* @llvm_Tseqno
	%10 = add i16 %9, 1
	store i16 %10, i16* @llvm_Tseqno
	%11 = load %ast.AstNode** %node
	%12 = getelementptr %ast.AstNode* %11, i32 0, i32 0
	%13 = load i8* %12
	%14 = zext i8 %13 to i32
	switch i32 %14, label %L.1 [
		i32 34, label %L.3
		i32 33, label %L.4
		i32 36, label %L.5
		i32 37, label %L.6
		i32 38, label %L.7
		i32 39, label %L.8
		i32 40, label %L.9
		i32 41, label %L.10
		i32 42, label %L.11
		i32 32, label %L.12
		i32 43, label %L.13
		i32 44, label %L.14
		i32 45, label %L.15
		i32 46, label %L.16
		i32 47, label %L.17
	]
L.3:
	%15 = getelementptr [22 x i8]* @S.749
	%16 = bitcast [22 x i8]* %15 to [0 x i8]*
	%17 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %16, %ast.AstNode* %17)
	br label %L.2
L.4:
	%18 = getelementptr [21 x i8]* @S.750
	%19 = bitcast [21 x i8]* %18 to [0 x i8]*
	%20 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %19, %ast.AstNode* %20)
	br label %L.2
L.5:
	%21 = getelementptr [24 x i8]* @S.751
	%22 = bitcast [24 x i8]* %21 to [0 x i8]*
	%23 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %22, %ast.AstNode* %23)
	br label %L.2
L.6:
	%24 = getelementptr [26 x i8]* @S.752
	%25 = bitcast [26 x i8]* %24 to [0 x i8]*
	%26 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %25, %ast.AstNode* %26)
	br label %L.2
L.7:
	%27 = getelementptr [28 x i8]* @S.753
	%28 = bitcast [28 x i8]* %27 to [0 x i8]*
	%29 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %28, %ast.AstNode* %29)
	br label %L.2
L.8:
	%30 = getelementptr [27 x i8]* @S.754
	%31 = bitcast [27 x i8]* %30 to [0 x i8]*
	%32 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %31, %ast.AstNode* %32)
	br label %L.2
L.9:
	%33 = getelementptr [27 x i8]* @S.755
	%34 = bitcast [27 x i8]* %33 to [0 x i8]*
	%35 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %34, %ast.AstNode* %35)
	br label %L.2
L.10:
	%36 = getelementptr [27 x i8]* @S.756
	%37 = bitcast [27 x i8]* %36 to [0 x i8]*
	%38 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %37, %ast.AstNode* %38)
	br label %L.2
L.11:
	%39 = getelementptr [27 x i8]* @S.757
	%40 = bitcast [27 x i8]* %39 to [0 x i8]*
	%41 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %40, %ast.AstNode* %41)
	br label %L.2
L.12:
	%42 = getelementptr [37 x i8]* @S.758
	%43 = bitcast [37 x i8]* %42 to [0 x i8]*
	%44 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %43, %ast.AstNode* %44)
	%45 = load %ast.AstNode** %node
	%46 = getelementptr %ast.AstNode* %45, i32 0, i32 7
	%47 = load i32* %46
	%48 = load %target.ModelT** @target_Target
	%49 = getelementptr %target.ModelT* %48, i32 0, i32 2
	%50 = load i8* %49
	%51 = zext i8 %50 to i32
	%52 = udiv i32 %47, %51
	%53 = load %ast.AstNode** %node
	%54 = getelementptr %ast.AstNode* %53, i32 0, i32 8
	%55 = load %type.TypeNode** %54
	call void @llvm_UseIntrinsic(i8 5, i32 %52, %type.TypeNode* %55)
	br label %L.2
L.13:
	%56 = getelementptr [47 x i8]* @S.759
	%57 = bitcast [47 x i8]* %56 to [0 x i8]*
	%58 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %57, %ast.AstNode* %58)
	%59 = load %ast.AstNode** %node
	%60 = getelementptr %ast.AstNode* %59, i32 0, i32 7
	%61 = load i32* %60
	%62 = load %target.ModelT** @target_Target
	%63 = getelementptr %target.ModelT* %62, i32 0, i32 2
	%64 = load i8* %63
	%65 = zext i8 %64 to i32
	%66 = udiv i32 %61, %65
	%67 = load %ast.AstNode** %node
	%68 = getelementptr %ast.AstNode* %67, i32 0, i32 8
	%69 = load %type.TypeNode** %68
	call void @llvm_UseIntrinsic(i8 6, i32 %66, %type.TypeNode* %69)
	br label %L.2
L.14:
	%70 = getelementptr [46 x i8]* @S.760
	%71 = bitcast [46 x i8]* %70 to [0 x i8]*
	%72 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %71, %ast.AstNode* %72)
	%73 = load %ast.AstNode** %node
	%74 = getelementptr %ast.AstNode* %73, i32 0, i32 7
	%75 = load i32* %74
	%76 = load %target.ModelT** @target_Target
	%77 = getelementptr %target.ModelT* %76, i32 0, i32 2
	%78 = load i8* %77
	%79 = zext i8 %78 to i32
	%80 = udiv i32 %75, %79
	%81 = load %ast.AstNode** %node
	%82 = getelementptr %ast.AstNode* %81, i32 0, i32 8
	%83 = load %type.TypeNode** %82
	call void @llvm_UseIntrinsic(i8 6, i32 %80, %type.TypeNode* %83)
	br label %L.2
L.15:
	%84 = getelementptr [47 x i8]* @S.761
	%85 = bitcast [47 x i8]* %84 to [0 x i8]*
	%86 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %85, %ast.AstNode* %86)
	%87 = load %ast.AstNode** %node
	%88 = getelementptr %ast.AstNode* %87, i32 0, i32 7
	%89 = load i32* %88
	%90 = load %target.ModelT** @target_Target
	%91 = getelementptr %target.ModelT* %90, i32 0, i32 2
	%92 = load i8* %91
	%93 = zext i8 %92 to i32
	%94 = udiv i32 %89, %93
	%95 = load %ast.AstNode** %node
	%96 = getelementptr %ast.AstNode* %95, i32 0, i32 8
	%97 = load %type.TypeNode** %96
	call void @llvm_UseIntrinsic(i8 7, i32 %94, %type.TypeNode* %97)
	br label %L.2
L.16:
	%98 = getelementptr [46 x i8]* @S.762
	%99 = bitcast [46 x i8]* %98 to [0 x i8]*
	%100 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %99, %ast.AstNode* %100)
	%101 = load %ast.AstNode** %node
	%102 = getelementptr %ast.AstNode* %101, i32 0, i32 7
	%103 = load i32* %102
	%104 = load %target.ModelT** @target_Target
	%105 = getelementptr %target.ModelT* %104, i32 0, i32 2
	%106 = load i8* %105
	%107 = zext i8 %106 to i32
	%108 = udiv i32 %103, %107
	%109 = load %ast.AstNode** %node
	%110 = getelementptr %ast.AstNode* %109, i32 0, i32 8
	%111 = load %type.TypeNode** %110
	call void @llvm_UseIntrinsic(i8 7, i32 %108, %type.TypeNode* %111)
	br label %L.2
L.17:
	%112 = getelementptr [38 x i8]* @S.763
	%113 = bitcast [38 x i8]* %112 to [0 x i8]*
	%114 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %113, %ast.AstNode* %114)
	%115 = load %ast.AstNode** %node
	%116 = getelementptr %ast.AstNode* %115, i32 0, i32 7
	%117 = load i32* %116
	%118 = load %target.ModelT** @target_Target
	%119 = getelementptr %target.ModelT* %118, i32 0, i32 2
	%120 = load i8* %119
	%121 = zext i8 %120 to i32
	%122 = udiv i32 %117, %121
	%123 = load %ast.AstNode** %node
	%124 = getelementptr %ast.AstNode* %123, i32 0, i32 8
	%125 = load %type.TypeNode** %124
	call void @llvm_UseIntrinsic(i8 8, i32 %122, %type.TypeNode* %125)
	br label %L.2
L.1:
	br label %L.2
L.2:
	%126 = load %ast.AstNode** %node
	call void @llvm_PEndLine(%ast.AstNode* %126)
	store i8 0, i8* %rv.0
	br label %return
return:
	%127 = load i8* %rv.0
	ret i8 %127
}
@S.764 = internal constant [3 x i8] c"\22\22\00"
define internal void @llvm_PStringCon(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%n = alloca i16
	%0 = load %ast.AstNode** %node
	%1 = icmp eq %ast.AstNode* %0, null
	br i1 %1, label %L.2, label %L.3
L.2:
	%2 = load %bout.BufIO** @llvm_f
	%3 = bitcast %bout.BufIO* %2 to %bout.BufIO*
	%4 = getelementptr [3 x i8]* @S.764
	%5 = bitcast [3 x i8]* %4 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %3, [0 x i8]* %5)
	br label %L.1
L.3:
	%6 = load %ast.AstNode** %node
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 9
	%8 = load %symb.SymbNode** %7
	%9 = getelementptr %symb.SymbNode* %8, i32 0, i32 22
	%10 = getelementptr [0 x i8]* %9
	%11 = bitcast [0 x i8]* %10 to [0 x i8]*
	%12 = call i32 @zstr_len([0 x i8]* %11, i32 4095)
	%13 = trunc i32 %12 to i16
	store i16 %13, i16* %n
	%14 = load %ast.AstNode** %node
	%15 = getelementptr %ast.AstNode* %14, i32 0, i32 9
	%16 = load %symb.SymbNode** %15
	%17 = getelementptr %symb.SymbNode* %16, i32 0, i32 22
	%18 = getelementptr [0 x i8]* %17
	%19 = bitcast [0 x i8]* %18 to [0 x i8]*
	%20 = load i16* %n
	call void @llvm_PString([0 x i8]* %19, i16 %20, i8 0)
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@S.765 = internal constant [20 x i8] c"\09%N = extractvalue \00"
@S.766 = internal constant [7 x i8] c" %0N, \00"
define internal void @llvm_GetRV(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%tl = alloca %type.TypeListEntry*
	%ps = alloca %symb.SymbNode*
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 10
	%2 = load i64* %1
	%3 = icmp eq i64 %2, 0
	br i1 %3, label %L.2, label %L.1
L.2:
	%4 = load %ast.AstNode** %node
	%5 = getelementptr %ast.AstNode* %4, i32 0, i32 11
	%6 = getelementptr [0 x %ast.AstNode*]* %5, i32 0, i32 0
	%7 = load %ast.AstNode** %6
	%8 = bitcast %ast.AstNode* %7 to %ast.AstNode*
	%9 = call i8 @llvm_GenSub(%ast.AstNode* %8)
	br label %L.1
L.1:
	%10 = load i16* @llvm_Tseqno
	%11 = load %ast.AstNode** %node
	%12 = getelementptr %ast.AstNode* %11, i32 0, i32 6
	store i16 %10, i16* %12
	%13 = load i16* @llvm_Tseqno
	%14 = add i16 %13, 1
	store i16 %14, i16* @llvm_Tseqno
	%15 = getelementptr [20 x i8]* @S.765
	%16 = bitcast [20 x i8]* %15 to [0 x i8]*
	%17 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %16, %ast.AstNode* %17)
	%18 = load %ast.AstNode** %node
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 11
	%20 = getelementptr [0 x %ast.AstNode*]* %19, i32 0, i32 0
	%21 = load %ast.AstNode** %20
	%22 = getelementptr %ast.AstNode* %21, i32 0, i32 9
	%23 = load %symb.SymbNode** %22
	store %symb.SymbNode* %23, %symb.SymbNode** %ps
	%24 = load %symb.SymbNode** %ps
	%25 = icmp ne %symb.SymbNode* %24, null
	br i1 %25, label %L.4, label %L.5
L.4:
	%26 = load %symb.SymbNode** %ps
	%27 = getelementptr %symb.SymbNode* %26, i32 0, i32 4
	%28 = load %type.TypeListEntry** %27
	store %type.TypeListEntry* %28, %type.TypeListEntry** %tl
	br label %L.3
L.5:
	%29 = load %ast.AstNode** %node
	%30 = getelementptr %ast.AstNode* %29, i32 0, i32 11
	%31 = getelementptr [0 x %ast.AstNode*]* %30, i32 0, i32 0
	%32 = load %ast.AstNode** %31
	%33 = getelementptr %ast.AstNode* %32, i32 0, i32 8
	%34 = load %type.TypeNode** %33
	%35 = bitcast %type.TypeNode* %34 to %type.TypeListEntry*
	store %type.TypeListEntry* %35, %type.TypeListEntry** %tl
	br label %L.3
L.3:
	%36 = load %type.TypeListEntry** %tl
	call void @llvm_PRetvType(%type.TypeListEntry* %36, i8 0)
	%37 = getelementptr [7 x i8]* @S.766
	%38 = bitcast [7 x i8]* %37 to [0 x i8]*
	%39 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %38, %ast.AstNode* %39)
	%40 = load %bout.BufIO** @llvm_f
	%41 = bitcast %bout.BufIO* %40 to %bout.BufIO*
	%42 = load %ast.AstNode** %node
	%43 = getelementptr %ast.AstNode* %42, i32 0, i32 10
	%44 = load i64* %43
	%45 = trunc i64 %44 to i32
	call void @bout_BufIO_uint32(%bout.BufIO* %41, i32 %45)
	%46 = load %bout.BufIO** @llvm_f
	%47 = bitcast %bout.BufIO* %46 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %47)
	br label %return
return:
	ret void
}
@S.767 = internal constant [6 x i8] c"%N = \00"
@S.768 = internal constant [5 x i8] c"call\00"
@S.769 = internal constant [17 x i8] c" asm sideeffect \00"
@S.770 = internal constant [3 x i8] c", \00"
@S.771 = internal constant [3 x i8] c" (\00"
@S.772 = internal constant [6 x i8] c"%T %N\00"
@S.773 = internal constant [3 x i8] c", \00"
@S.774 = internal constant [3 x i8] c")\0A\00"
define internal void @llvm_Asm(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%i = alloca i16
	store i16 2, i16* %i
	br label %L.1
L.1:
	%0 = load i16* %i
	%1 = load %ast.AstNode** %node
	%2 = getelementptr %ast.AstNode* %1, i32 0, i32 2
	%3 = load i16* %2
	%4 = icmp ult i16 %0, %3
	%5 = xor i1 %4, true
	br i1 %5, label %L.2, label %L.3
L.3:
	%6 = load %ast.AstNode** %node
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 11
	%8 = load i16* %i
	%9 = zext i16 %8 to i32
	%10 = getelementptr [0 x %ast.AstNode*]* %7, i32 0, i32 %9
	%11 = load %ast.AstNode** %10
	%12 = bitcast %ast.AstNode* %11 to %ast.AstNode*
	%13 = call i8 @llvm_GenSub(%ast.AstNode* %12)
	%14 = load i16* %i
	%15 = add i16 %14, 1
	store i16 %15, i16* %i
	br label %L.1
L.2:
	%16 = load %bout.BufIO** @llvm_f
	%17 = bitcast %bout.BufIO* %16 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %17, i8 9)
	%18 = load %ast.AstNode** %node
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 8
	%20 = load %type.TypeNode** %19
	%21 = icmp ne %type.TypeNode* %20, null
	br i1 %21, label %L.5, label %L.4
L.5:
	%22 = load i16* @llvm_Tseqno
	%23 = load %ast.AstNode** %node
	%24 = getelementptr %ast.AstNode* %23, i32 0, i32 6
	store i16 %22, i16* %24
	%25 = load i16* @llvm_Tseqno
	%26 = add i16 %25, 1
	store i16 %26, i16* @llvm_Tseqno
	%27 = getelementptr [6 x i8]* @S.767
	%28 = bitcast [6 x i8]* %27 to [0 x i8]*
	%29 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %28, %ast.AstNode* %29)
	br label %L.4
L.4:
	%30 = load %bout.BufIO** @llvm_f
	%31 = bitcast %bout.BufIO* %30 to %bout.BufIO*
	%32 = getelementptr [5 x i8]* @S.768
	%33 = bitcast [5 x i8]* %32 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %31, [0 x i8]* %33)
	%34 = load %ast.AstNode** %node
	%35 = getelementptr %ast.AstNode* %34, i32 0, i32 8
	%36 = load %type.TypeNode** %35
	%37 = bitcast %type.TypeNode* %36 to %type.TypeListEntry*
	call void @llvm_PRetvType(%type.TypeListEntry* %37, i8 0)
	%38 = load %bout.BufIO** @llvm_f
	%39 = bitcast %bout.BufIO* %38 to %bout.BufIO*
	%40 = getelementptr [17 x i8]* @S.769
	%41 = bitcast [17 x i8]* %40 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %39, [0 x i8]* %41)
	%42 = load %ast.AstNode** %node
	%43 = getelementptr %ast.AstNode* %42, i32 0, i32 11
	%44 = getelementptr [0 x %ast.AstNode*]* %43, i32 0, i32 0
	%45 = load %ast.AstNode** %44
	%46 = bitcast %ast.AstNode* %45 to %ast.AstNode*
	call void @llvm_PStringCon(%ast.AstNode* %46)
	%47 = load %bout.BufIO** @llvm_f
	%48 = bitcast %bout.BufIO* %47 to %bout.BufIO*
	%49 = getelementptr [3 x i8]* @S.770
	%50 = bitcast [3 x i8]* %49 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %48, [0 x i8]* %50)
	%51 = load %ast.AstNode** %node
	%52 = getelementptr %ast.AstNode* %51, i32 0, i32 11
	%53 = getelementptr [0 x %ast.AstNode*]* %52, i32 0, i32 1
	%54 = load %ast.AstNode** %53
	%55 = bitcast %ast.AstNode* %54 to %ast.AstNode*
	call void @llvm_PStringCon(%ast.AstNode* %55)
	%56 = load %bout.BufIO** @llvm_f
	%57 = bitcast %bout.BufIO* %56 to %bout.BufIO*
	%58 = getelementptr [3 x i8]* @S.771
	%59 = bitcast [3 x i8]* %58 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %57, [0 x i8]* %59)
	store i16 2, i16* %i
	%60 = load %ast.AstNode** %node
	%61 = getelementptr %ast.AstNode* %60, i32 0, i32 2
	%62 = load i16* %61
	%63 = load i16* %i
	%64 = icmp ugt i16 %62, %63
	br i1 %64, label %L.7, label %L.6
L.7:
	br label %L.8
L.8:
	%65 = getelementptr [6 x i8]* @S.772
	%66 = bitcast [6 x i8]* %65 to [0 x i8]*
	%67 = load %ast.AstNode** %node
	%68 = getelementptr %ast.AstNode* %67, i32 0, i32 11
	%69 = load i16* %i
	%70 = zext i16 %69 to i32
	%71 = getelementptr [0 x %ast.AstNode*]* %68, i32 0, i32 %70
	%72 = load %ast.AstNode** %71
	%73 = bitcast %ast.AstNode* %72 to %ast.AstNode*
	call void @llvm_Print([0 x i8]* %66, %ast.AstNode* %73)
	%74 = load i16* %i
	%75 = add i16 %74, 1
	store i16 %75, i16* %i
	%76 = load i16* %i
	%77 = load %ast.AstNode** %node
	%78 = getelementptr %ast.AstNode* %77, i32 0, i32 2
	%79 = load i16* %78
	%80 = icmp uge i16 %76, %79
	br i1 %80, label %L.9, label %L.10
L.10:
	%81 = load %bout.BufIO** @llvm_f
	%82 = bitcast %bout.BufIO* %81 to %bout.BufIO*
	%83 = getelementptr [3 x i8]* @S.773
	%84 = bitcast [3 x i8]* %83 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %82, [0 x i8]* %84)
	br label %L.8
L.9:
	br label %L.6
L.6:
	%85 = load %bout.BufIO** @llvm_f
	%86 = bitcast %bout.BufIO* %85 to %bout.BufIO*
	%87 = getelementptr [3 x i8]* @S.774
	%88 = bitcast [3 x i8]* %87 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %86, [0 x i8]* %88)
	br label %return
return:
	ret void
}
define internal void @llvm_DclParmRetv(%symb.SymbNode* %ps$) nounwind {
L.0:
	%ps = alloca %symb.SymbNode*
	store %symb.SymbNode* %ps$, %symb.SymbNode** %ps
	%tl = alloca %type.TypeListEntry*
	%s = alloca %symb.SymbNode*
	%0 = load %symb.SymbNode** %ps
	%1 = getelementptr %symb.SymbNode* %0, i32 0, i32 3
	%2 = load %symb.SymbNode** %1
	%3 = bitcast %symb.SymbNode* %2 to %symb.SymbNode*
	store %symb.SymbNode* %3, %symb.SymbNode** %s
	br label %L.1
L.1:
	%4 = load %symb.SymbNode** %s
	%5 = icmp ne %symb.SymbNode* %4, null
	%6 = xor i1 %5, true
	br i1 %6, label %L.2, label %L.3
L.3:
	%7 = load %symb.SymbNode** %s
	%8 = getelementptr %symb.SymbNode* %7, i32 0, i32 1
	%9 = load %type.TypeNode** %8
	call void @llvm_DclType(%type.TypeNode* %9)
	%10 = load %symb.SymbNode** %s
	%11 = getelementptr %symb.SymbNode* %10, i32 0, i32 0
	%12 = load %symb.SymbNode** %11
	%13 = bitcast %symb.SymbNode* %12 to %symb.SymbNode*
	store %symb.SymbNode* %13, %symb.SymbNode** %s
	br label %L.1
L.2:
	%14 = load %symb.SymbNode** %ps
	%15 = getelementptr %symb.SymbNode* %14, i32 0, i32 4
	%16 = load %type.TypeListEntry** %15
	store %type.TypeListEntry* %16, %type.TypeListEntry** %tl
	br label %L.4
L.4:
	%17 = load %type.TypeListEntry** %tl
	%18 = icmp ne %type.TypeListEntry* %17, null
	%19 = xor i1 %18, true
	br i1 %19, label %L.5, label %L.6
L.6:
	%20 = load %type.TypeListEntry** %tl
	%21 = getelementptr %type.TypeListEntry* %20, i32 0, i32 1
	%22 = load %type.TypeNode** %21
	%23 = bitcast %type.TypeNode* %22 to %type.TypeNode*
	call void @llvm_DclType(%type.TypeNode* %23)
	%24 = load %type.TypeListEntry** %tl
	%25 = getelementptr %type.TypeListEntry* %24, i32 0, i32 0
	%26 = load %type.TypeListEntry** %25
	%27 = bitcast %type.TypeListEntry* %26 to %type.TypeListEntry*
	store %type.TypeListEntry* %27, %type.TypeListEntry** %tl
	br label %L.4
L.5:
	br label %return
return:
	ret void
}
@S.775 = internal constant [6 x i8] c"%N = \00"
@S.776 = internal constant [6 x i8] c"tail \00"
@S.777 = internal constant [5 x i8] c"call\00"
@S.778 = internal constant [6 x i8] c" %0N(\00"
@S.779 = internal constant [5 x i8] c" %I(\00"
@S.780 = internal constant [6 x i8] c"%T %N\00"
@S.781 = internal constant [3 x i8] c", \00"
@S.782 = internal constant [3 x i8] c")\0A\00"
define internal void @llvm_Call(%ast.AstNode* %node$, i8 zeroext %indirect$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	%indirect = alloca i8
	store %ast.AstNode* %node$, %ast.AstNode** %node
	store i8 %indirect$, i8* %indirect
	%i = alloca i16
	store i16 0, i16* %i
	br label %L.1
L.1:
	%0 = load i16* %i
	%1 = load %ast.AstNode** %node
	%2 = getelementptr %ast.AstNode* %1, i32 0, i32 2
	%3 = load i16* %2
	%4 = icmp ult i16 %0, %3
	%5 = xor i1 %4, true
	br i1 %5, label %L.2, label %L.3
L.3:
	%6 = load %ast.AstNode** %node
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 11
	%8 = load i16* %i
	%9 = zext i16 %8 to i32
	%10 = getelementptr [0 x %ast.AstNode*]* %7, i32 0, i32 %9
	%11 = load %ast.AstNode** %10
	%12 = bitcast %ast.AstNode* %11 to %ast.AstNode*
	%13 = call i8 @llvm_GenSub(%ast.AstNode* %12)
	%14 = load i16* %i
	%15 = add i16 %14, 1
	store i16 %15, i16* %i
	br label %L.1
L.2:
	%16 = load %bout.BufIO** @llvm_f
	%17 = bitcast %bout.BufIO* %16 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %17, i8 9)
	%18 = load %ast.AstNode** %node
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 8
	%20 = load %type.TypeNode** %19
	%21 = icmp ne %type.TypeNode* %20, null
	br i1 %21, label %L.4, label %L.5
L.4:
	%22 = load %ast.AstNode** %node
	%23 = getelementptr %ast.AstNode* %22, i32 0, i32 8
	%24 = load %type.TypeNode** %23
	%25 = getelementptr %type.TypeNode* %24, i32 0, i32 14
	%26 = load i8* %25
	%27 = icmp ne i8 %26, 0
	br label %L.5
L.5:
	%28 = phi i1 [ false, %L.2 ], [ %27, %L.4 ]
	br i1 %28, label %L.7, label %L.6
L.7:
	%29 = load i16* @llvm_Tseqno
	%30 = load %ast.AstNode** %node
	%31 = getelementptr %ast.AstNode* %30, i32 0, i32 6
	store i16 %29, i16* %31
	%32 = load i16* @llvm_Tseqno
	%33 = add i16 %32, 1
	store i16 %33, i16* @llvm_Tseqno
	%34 = getelementptr [6 x i8]* @S.775
	%35 = bitcast [6 x i8]* %34 to [0 x i8]*
	%36 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %35, %ast.AstNode* %36)
	br label %L.6
L.6:
	%37 = getelementptr %A.3* @feature, i32 0, i32 5
	%38 = load i8* %37
	%39 = icmp ne i8 %38, 0
	br i1 %39, label %L.9, label %L.8
L.9:
	%40 = load %bout.BufIO** @llvm_f
	%41 = bitcast %bout.BufIO* %40 to %bout.BufIO*
	%42 = getelementptr [6 x i8]* @S.776
	%43 = bitcast [6 x i8]* %42 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %41, [0 x i8]* %43)
	br label %L.8
L.8:
	%44 = load %bout.BufIO** @llvm_f
	%45 = bitcast %bout.BufIO* %44 to %bout.BufIO*
	%46 = getelementptr [5 x i8]* @S.777
	%47 = bitcast [5 x i8]* %46 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %45, [0 x i8]* %47)
	%48 = load %ast.AstNode** %node
	%49 = getelementptr %ast.AstNode* %48, i32 0, i32 9
	%50 = load %symb.SymbNode** %49
	%51 = getelementptr %symb.SymbNode* %50, i32 0, i32 4
	%52 = load %type.TypeListEntry** %51
	call void @llvm_PRetvType(%type.TypeListEntry* %52, i8 0)
	%53 = load i8* %indirect
	%54 = icmp ne i8 %53, 0
	br i1 %54, label %L.11, label %L.12
L.11:
	%55 = getelementptr [6 x i8]* @S.778
	%56 = bitcast [6 x i8]* %55 to [0 x i8]*
	%57 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %56, %ast.AstNode* %57)
	store i16 1, i16* %i
	br label %L.10
L.12:
	%58 = getelementptr [5 x i8]* @S.779
	%59 = bitcast [5 x i8]* %58 to [0 x i8]*
	%60 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %59, %ast.AstNode* %60)
	store i16 0, i16* %i
	br label %L.10
L.10:
	%61 = load %ast.AstNode** %node
	%62 = getelementptr %ast.AstNode* %61, i32 0, i32 2
	%63 = load i16* %62
	%64 = load i16* %i
	%65 = icmp ugt i16 %63, %64
	br i1 %65, label %L.14, label %L.13
L.14:
	br label %L.15
L.15:
	%66 = getelementptr [6 x i8]* @S.780
	%67 = bitcast [6 x i8]* %66 to [0 x i8]*
	%68 = load %ast.AstNode** %node
	%69 = getelementptr %ast.AstNode* %68, i32 0, i32 11
	%70 = load i16* %i
	%71 = zext i16 %70 to i32
	%72 = getelementptr [0 x %ast.AstNode*]* %69, i32 0, i32 %71
	%73 = load %ast.AstNode** %72
	%74 = bitcast %ast.AstNode* %73 to %ast.AstNode*
	call void @llvm_Print([0 x i8]* %67, %ast.AstNode* %74)
	%75 = load i16* %i
	%76 = add i16 %75, 1
	store i16 %76, i16* %i
	%77 = load i16* %i
	%78 = load %ast.AstNode** %node
	%79 = getelementptr %ast.AstNode* %78, i32 0, i32 2
	%80 = load i16* %79
	%81 = icmp uge i16 %77, %80
	br i1 %81, label %L.16, label %L.17
L.17:
	%82 = load %bout.BufIO** @llvm_f
	%83 = bitcast %bout.BufIO* %82 to %bout.BufIO*
	%84 = getelementptr [3 x i8]* @S.781
	%85 = bitcast [3 x i8]* %84 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %83, [0 x i8]* %85)
	br label %L.15
L.16:
	br label %L.13
L.13:
	%86 = load %bout.BufIO** @llvm_f
	%87 = bitcast %bout.BufIO* %86 to %bout.BufIO*
	%88 = getelementptr [3 x i8]* @S.782
	%89 = bitcast [3 x i8]* %88 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %87, [0 x i8]* %89)
	%90 = load %ast.AstNode** %node
	%91 = getelementptr %ast.AstNode* %90, i32 0, i32 9
	%92 = load %symb.SymbNode** %91
	%93 = getelementptr %symb.SymbNode* %92, i32 0, i32 15
	%94 = load i8* %93
	%95 = icmp ne i8 %94, 0
	br i1 %95, label %L.19, label %L.18
L.19:
	%96 = load %ast.AstNode** %node
	%97 = getelementptr %ast.AstNode* %96, i32 0, i32 9
	%98 = load %symb.SymbNode** %97
	%99 = getelementptr %symb.SymbNode* %98, i32 0, i32 22
	%100 = getelementptr [0 x i8]* %99
	%101 = bitcast [0 x i8]* %100 to [0 x i8]*
	call void @lex_ErrorI(i8 45, [0 x i8]* %101)
	br label %L.18
L.18:
	br label %return
return:
	ret void
}
define internal void @llvm_DclProcSearch(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%i = alloca i16
	%lhs = alloca %ast.AstNode*
	%rhs = alloca %ast.AstNode*
	%s = alloca %symb.SymbNode*
	%op = alloca i8
	%0 = load %ast.AstNode** %node
	%1 = icmp ne %ast.AstNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load %ast.AstNode** %node
	%3 = getelementptr %ast.AstNode* %2, i32 0, i32 0
	%4 = load i8* %3
	%5 = zext i8 %4 to i32
	switch i32 %5, label %L.3 [
		i32 5, label %L.5
		i32 6, label %L.6
		i32 9, label %L.7
		i32 10, label %L.8
		i32 18, label %L.9
		i32 35, label %L.10
		i32 64, label %L.11
		i32 65, label %L.11
		i32 66, label %L.11
		i32 67, label %L.11
		i32 20, label %L.12
	]
L.5:
	%6 = load %ast.AstNode** %node
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 9
	%8 = load %symb.SymbNode** %7
	store %symb.SymbNode* %8, %symb.SymbNode** %s
	%9 = load %symb.SymbNode** %s
	%10 = getelementptr %symb.SymbNode* %9, i32 0, i32 1
	%11 = load %type.TypeNode** %10
	call void @llvm_DclType(%type.TypeNode* %11)
	%12 = load %symb.SymbNode** %s
	%13 = getelementptr %symb.SymbNode* %12, i32 0, i32 14
	%14 = load i8* %13
	%15 = icmp ne i8 %14, 1
	br i1 %15, label %L.14, label %L.13
L.14:
	%16 = load %ast.AstNode** %node
	call void @llvm_DclVar(%ast.AstNode* %16)
	%17 = load %ast.AstNode** %node
	%18 = getelementptr %ast.AstNode* %17, i32 0, i32 0
	store i8 0, i8* %18
	br label %L.13
L.13:
	br label %return
L.6:
	%19 = load %ast.AstNode** %node
	%20 = getelementptr %ast.AstNode* %19, i32 0, i32 9
	%21 = load %symb.SymbNode** %20
	store %symb.SymbNode* %21, %symb.SymbNode** %s
	%22 = load %symb.SymbNode** %s
	%23 = icmp ne %symb.SymbNode* %22, null
	br i1 %23, label %L.16, label %L.15
L.16:
	%24 = load %symb.SymbNode** %s
	%25 = getelementptr %symb.SymbNode* %24, i32 0, i32 14
	store i8 2, i8* %25
	%26 = load %ast.AstNode** %node
	call void @llvm_DclCon(%ast.AstNode* %26)
	br label %L.15
L.15:
	%27 = load %ast.AstNode** %node
	%28 = getelementptr %ast.AstNode* %27, i32 0, i32 0
	store i8 0, i8* %28
	br label %return
L.7:
	%29 = load %ast.AstNode** %node
	call void @llvm_DclString(%ast.AstNode* %29)
	br label %return
L.8:
	%30 = load %ast.AstNode** %node
	call void @llvm_DclAggregate(%ast.AstNode* %30)
	br label %return
L.9:
	%ps = alloca %symb.SymbNode*
	%31 = load %ast.AstNode** %node
	%32 = getelementptr %ast.AstNode* %31, i32 0, i32 9
	%33 = load %symb.SymbNode** %32
	store %symb.SymbNode* %33, %symb.SymbNode** %ps
	%34 = load %symb.SymbNode** %ps
	%35 = getelementptr %symb.SymbNode* %34, i32 0, i32 14
	%36 = load i8* %35
	%37 = icmp eq i8 %36, 5
	br i1 %37, label %L.17, label %L.18
L.17:
	%38 = load %symb.SymbNode** %ps
	%39 = getelementptr %symb.SymbNode* %38, i32 0, i32 21
	%40 = load i8* %39
	%41 = icmp ne i8 %40, 0
	%42 = xor i1 %41, true
	br label %L.18
L.18:
	%43 = phi i1 [ false, %L.9 ], [ %42, %L.17 ]
	br i1 %43, label %L.20, label %L.19
L.20:
	%44 = load %symb.SymbNode** %ps
	call void @llvm_DclParmRetv(%symb.SymbNode* %44)
	%45 = load %ast.AstNode** %node
	call void @llvm_DclProc(%ast.AstNode* %45, i8 0)
	%46 = load %bout.BufIO** @llvm_f
	%47 = bitcast %bout.BufIO* %46 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %47, i8 10)
	%48 = load %symb.SymbNode** %ps
	%49 = getelementptr %symb.SymbNode* %48, i32 0, i32 21
	store i8 1, i8* %49
	br label %L.19
L.19:
	br label %L.4
L.10:
	%50 = load %ast.AstNode** %node
	%51 = getelementptr %ast.AstNode* %50, i32 0, i32 11
	%52 = getelementptr [0 x %ast.AstNode*]* %51, i32 0, i32 0
	%53 = load %ast.AstNode** %52
	%54 = bitcast %ast.AstNode* %53 to %ast.AstNode*
	store %ast.AstNode* %54, %ast.AstNode** %rhs
	%55 = load %ast.AstNode** %rhs
	%56 = getelementptr %ast.AstNode* %55, i32 0, i32 8
	%57 = load %type.TypeNode** %56
	%58 = load %ast.AstNode** %rhs
	%59 = call %ast.AstNode* @ast_New1(i8 33, %type.TypeNode* %57, %ast.AstNode* %58)
	store %ast.AstNode* %59, %ast.AstNode** %lhs
	%60 = load %type.TypeNode** @type_booltype
	%61 = load %ast.AstNode** %rhs
	%62 = load %ast.AstNode** %rhs
	%63 = getelementptr %ast.AstNode* %62, i32 0, i32 8
	%64 = load %type.TypeNode** %63
	%65 = call %ast.AstNode* @ast_Const(%type.TypeNode* %64, i64 0)
	%66 = call %ast.AstNode* @ast_New2(i8 60, %type.TypeNode* %60, %ast.AstNode* %61, %ast.AstNode* %65)
	%67 = bitcast %ast.AstNode* %66 to %ast.AstNode*
	%68 = load %ast.AstNode** %node
	%69 = getelementptr %ast.AstNode* %68, i32 0, i32 11
	%70 = getelementptr [0 x %ast.AstNode*]* %69, i32 0, i32 0
	store %ast.AstNode* %67, %ast.AstNode** %70
	%71 = load %ast.AstNode** %node
	%72 = load %ast.AstNode** %lhs
	%73 = call %ast.AstNode* @ast_Child(%ast.AstNode* %71, %ast.AstNode* %72)
	store %ast.AstNode* %73, %ast.AstNode** %node
	%74 = load %ast.AstNode** %node
	%75 = load %ast.AstNode** %rhs
	%76 = call %ast.AstNode* @ast_Child(%ast.AstNode* %74, %ast.AstNode* %75)
	store %ast.AstNode* %76, %ast.AstNode** %node
	%77 = load %ast.AstNode** %node
	%78 = getelementptr %ast.AstNode* %77, i32 0, i32 0
	store i8 83, i8* %78
	br label %L.4
L.11:
	%79 = load %ast.AstNode** %node
	%80 = getelementptr %ast.AstNode* %79, i32 0, i32 11
	%81 = getelementptr [0 x %ast.AstNode*]* %80, i32 0, i32 0
	%82 = load %ast.AstNode** %81
	%83 = bitcast %ast.AstNode* %82 to %ast.AstNode*
	store %ast.AstNode* %83, %ast.AstNode** %lhs
	%84 = load %ast.AstNode** %node
	%85 = getelementptr %ast.AstNode* %84, i32 0, i32 11
	%86 = getelementptr [0 x %ast.AstNode*]* %85, i32 0, i32 1
	%87 = load %ast.AstNode** %86
	%88 = bitcast %ast.AstNode* %87 to %ast.AstNode*
	store %ast.AstNode* %88, %ast.AstNode** %rhs
	%89 = load %ast.AstNode** %node
	%90 = getelementptr %ast.AstNode* %89, i32 0, i32 0
	%91 = load i8* %90
	%92 = zext i8 %91 to i32
	switch i32 %92, label %L.21 [
		i32 66, label %L.23
		i32 67, label %L.24
		i32 64, label %L.25
		i32 65, label %L.26
	]
L.23:
	store i8 60, i8* %op
	br label %L.22
L.24:
	store i8 61, i8* %op
	br label %L.22
L.25:
	store i8 56, i8* %op
	br label %L.22
L.26:
	store i8 57, i8* %op
	br label %L.22
L.21:
	br label %L.22
L.22:
	%93 = load i8* %op
	%94 = load %type.TypeNode** @type_booltype
	%95 = load %ast.AstNode** %lhs
	%96 = load %ast.AstNode** %rhs
	%97 = call %ast.AstNode* @ast_New2(i8 %93, %type.TypeNode* %94, %ast.AstNode* %95, %ast.AstNode* %96)
	%98 = bitcast %ast.AstNode* %97 to %ast.AstNode*
	%99 = load %ast.AstNode** %node
	%100 = getelementptr %ast.AstNode* %99, i32 0, i32 11
	%101 = getelementptr [0 x %ast.AstNode*]* %100, i32 0, i32 0
	store %ast.AstNode* %98, %ast.AstNode** %101
	%102 = load %ast.AstNode** %lhs
	%103 = bitcast %ast.AstNode* %102 to %ast.AstNode*
	%104 = load %ast.AstNode** %node
	%105 = getelementptr %ast.AstNode* %104, i32 0, i32 11
	%106 = getelementptr [0 x %ast.AstNode*]* %105, i32 0, i32 1
	store %ast.AstNode* %103, %ast.AstNode** %106
	%107 = load %ast.AstNode** %node
	%108 = load %ast.AstNode** %rhs
	%109 = call %ast.AstNode* @ast_Child(%ast.AstNode* %107, %ast.AstNode* %108)
	store %ast.AstNode* %109, %ast.AstNode** %node
	%110 = load %ast.AstNode** %node
	%111 = getelementptr %ast.AstNode* %110, i32 0, i32 0
	store i8 83, i8* %111
	br label %L.4
L.12:
	br label %return
L.3:
	br label %L.4
L.4:
	store i16 0, i16* %i
	br label %L.27
L.27:
	%112 = load i16* %i
	%113 = load %ast.AstNode** %node
	%114 = getelementptr %ast.AstNode* %113, i32 0, i32 2
	%115 = load i16* %114
	%116 = icmp ult i16 %112, %115
	%117 = xor i1 %116, true
	br i1 %117, label %L.28, label %L.29
L.29:
	%118 = load %ast.AstNode** %node
	%119 = getelementptr %ast.AstNode* %118, i32 0, i32 11
	%120 = load i16* %i
	%121 = zext i16 %120 to i32
	%122 = getelementptr [0 x %ast.AstNode*]* %119, i32 0, i32 %121
	%123 = load %ast.AstNode** %122
	%124 = bitcast %ast.AstNode* %123 to %ast.AstNode*
	call void @llvm_DclProcSearch(%ast.AstNode* %124)
	%125 = load i16* %i
	%126 = add i16 %125, 1
	store i16 %126, i16* %i
	br label %L.27
L.28:
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@S.783 = internal constant [14 x i8] c" alwaysinline\00"
@S.784 = internal constant [10 x i8] c" noinline\00"
@S.785 = internal constant [9 x i8] c" minsize\00"
@S.786 = internal constant [9 x i8] c" optsize\00"
@S.787 = internal constant [10 x i8] c" nounwind\00"
@S.788 = internal constant [4 x i8] c" {\0A\00"
@S.789 = internal constant [11 x i8] c" = alloca \00"
@S.790 = internal constant [3 x i8] c"\09%\00"
@S.791 = internal constant [11 x i8] c" = alloca \00"
@S.792 = internal constant [8 x i8] c"\09store \00"
@S.793 = internal constant [3 x i8] c" %\00"
@S.794 = internal constant [4 x i8] c"$, \00"
@S.795 = internal constant [4 x i8] c"* %\00"
@S.796 = internal constant [18 x i8] c"\09br label %return\00"
@S.797 = internal constant [9 x i8] c"return:\0A\00"
@S.798 = internal constant [9 x i8] c" = load \00"
@S.799 = internal constant [3 x i8] c"* \00"
@S.800 = internal constant [6 x i8] c"\09%mrv\00"
@S.801 = internal constant [15 x i8] c" = insertvalue\00"
@S.802 = internal constant [7 x i8] c" undef\00"
@S.803 = internal constant [6 x i8] c" %mrv\00"
@S.804 = internal constant [6 x i8] c"\09ret \00"
@S.805 = internal constant [6 x i8] c" %mrv\00"
@S.806 = internal constant [6 x i8] c"\09ret \00"
@S.807 = internal constant [10 x i8] c"\09ret void\00"
@S.808 = internal constant [4 x i8] c"\0A}\0A\00"
define internal void @llvm_Procedure(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%s = alloca %symb.SymbNode*
	%ps = alloca %symb.SymbNode*
	%tl = alloca %type.TypeListEntry*
	%i = alloca i16
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 9
	%2 = load %symb.SymbNode** %1
	store %symb.SymbNode* %2, %symb.SymbNode** %ps
	%3 = load %symb.SymbNode** %ps
	%4 = icmp ne %symb.SymbNode* %3, null
	br i1 %4, label %L.2, label %L.1
L.2:
	%5 = load %symb.SymbNode** %ps
	call void @llvm_DclParmRetv(%symb.SymbNode* %5)
	%6 = load %ast.AstNode** %node
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 11
	%8 = getelementptr [0 x %ast.AstNode*]* %7, i32 0, i32 0
	%9 = load %ast.AstNode** %8
	%10 = bitcast %ast.AstNode* %9 to %ast.AstNode*
	call void @llvm_DclProcSearch(%ast.AstNode* %10)
	%11 = load %ast.AstNode** %node
	call void @llvm_DclProc(%ast.AstNode* %11, i8 1)
	%12 = load %symb.SymbNode** %ps
	%13 = getelementptr %symb.SymbNode* %12, i32 0, i32 14
	%14 = load i8* %13
	%15 = zext i8 %14 to i32
	switch i32 %15, label %L.3 [
		i32 7, label %L.5
		i32 8, label %L.6
	]
L.5:
	%16 = load %bout.BufIO** @llvm_f
	%17 = bitcast %bout.BufIO* %16 to %bout.BufIO*
	%18 = getelementptr [14 x i8]* @S.783
	%19 = bitcast [14 x i8]* %18 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %17, [0 x i8]* %19)
	br label %L.4
L.6:
	%20 = load %bout.BufIO** @llvm_f
	%21 = bitcast %bout.BufIO* %20 to %bout.BufIO*
	%22 = getelementptr [10 x i8]* @S.784
	%23 = bitcast [10 x i8]* %22 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %21, [0 x i8]* %23)
	br label %L.4
L.3:
	br label %L.4
L.4:
	%24 = getelementptr %A.3* @feature, i32 0, i32 0
	%25 = load i8* %24
	%26 = icmp ne i8 %25, 0
	br i1 %26, label %L.8, label %L.7
L.8:
	%27 = getelementptr %A.3* @feature, i32 0, i32 0
	%28 = load i8* %27
	%29 = icmp eq i8 %28, 2
	br i1 %29, label %L.10, label %L.9
L.10:
	%30 = load %bout.BufIO** @llvm_f
	%31 = bitcast %bout.BufIO* %30 to %bout.BufIO*
	%32 = getelementptr [9 x i8]* @S.785
	%33 = bitcast [9 x i8]* %32 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %31, [0 x i8]* %33)
	br label %L.9
L.9:
	%34 = load %bout.BufIO** @llvm_f
	%35 = bitcast %bout.BufIO* %34 to %bout.BufIO*
	%36 = getelementptr [9 x i8]* @S.786
	%37 = bitcast [9 x i8]* %36 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %35, [0 x i8]* %37)
	br label %L.7
L.7:
	%38 = load %bout.BufIO** @llvm_f
	%39 = bitcast %bout.BufIO* %38 to %bout.BufIO*
	%40 = getelementptr [10 x i8]* @S.787
	%41 = bitcast [10 x i8]* %40 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %39, [0 x i8]* %41)
	%42 = load %symb.SymbNode** %ps
	%43 = getelementptr %symb.SymbNode* %42, i32 0, i32 7
	%44 = load %symb.SymbNode** %43
	%45 = bitcast %symb.SymbNode* %44 to %symb.SymbNode*
	call void @llvm_Section(%symb.SymbNode* %45, i8 0)
	%46 = load %bout.BufIO** @llvm_f
	%47 = bitcast %bout.BufIO* %46 to %bout.BufIO*
	%48 = getelementptr [4 x i8]* @S.788
	%49 = bitcast [4 x i8]* %48 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %47, [0 x i8]* %49)
	%50 = load i16* @llvm_Pseqno
	%51 = add i16 %50, 1
	store i16 %51, i16* @llvm_Pseqno
	store i16 1, i16* @llvm_Tseqno
	store i16 0, i16* @llvm_Lseqno
	%52 = load i16* @llvm_Lseqno
	call void @llvm_Label(i16 %52)
	%53 = load i16* @llvm_Lseqno
	%54 = add i16 %53, 1
	store i16 %54, i16* @llvm_Lseqno
	%55 = load %symb.SymbNode** %ps
	%56 = getelementptr %symb.SymbNode* %55, i32 0, i32 4
	%57 = load %type.TypeListEntry** %56
	store %type.TypeListEntry* %57, %type.TypeListEntry** %tl
	store i16 0, i16* %i
	br label %L.11
L.11:
	%58 = load %type.TypeListEntry** %tl
	%59 = icmp ne %type.TypeListEntry* %58, null
	%60 = xor i1 %59, true
	br i1 %60, label %L.12, label %L.13
L.13:
	%61 = load %bout.BufIO** @llvm_f
	%62 = bitcast %bout.BufIO* %61 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %62, i8 9)
	%63 = load i16* %i
	call void @llvm_PRetValName(i16 %63)
	%64 = load %bout.BufIO** @llvm_f
	%65 = bitcast %bout.BufIO* %64 to %bout.BufIO*
	%66 = getelementptr [11 x i8]* @S.789
	%67 = bitcast [11 x i8]* %66 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %65, [0 x i8]* %67)
	%68 = load %type.TypeListEntry** %tl
	%69 = getelementptr %type.TypeListEntry* %68, i32 0, i32 1
	%70 = load %type.TypeNode** %69
	%71 = bitcast %type.TypeNode* %70 to %type.TypeNode*
	call void @llvm_PType(%type.TypeNode* %71)
	%72 = load %bout.BufIO** @llvm_f
	%73 = bitcast %bout.BufIO* %72 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %73)
	%74 = load i16* %i
	%75 = add i16 %74, 1
	store i16 %75, i16* %i
	%76 = load %type.TypeListEntry** %tl
	%77 = getelementptr %type.TypeListEntry* %76, i32 0, i32 0
	%78 = load %type.TypeListEntry** %77
	%79 = bitcast %type.TypeListEntry* %78 to %type.TypeListEntry*
	store %type.TypeListEntry* %79, %type.TypeListEntry** %tl
	br label %L.11
L.12:
	%80 = load %symb.SymbNode** %ps
	%81 = getelementptr %symb.SymbNode* %80, i32 0, i32 3
	%82 = load %symb.SymbNode** %81
	%83 = bitcast %symb.SymbNode* %82 to %symb.SymbNode*
	store %symb.SymbNode* %83, %symb.SymbNode** %s
	br label %L.14
L.14:
	%84 = load %symb.SymbNode** %s
	%85 = icmp ne %symb.SymbNode* %84, null
	%86 = xor i1 %85, true
	br i1 %86, label %L.15, label %L.16
L.16:
	%87 = load %bout.BufIO** @llvm_f
	%88 = bitcast %bout.BufIO* %87 to %bout.BufIO*
	%89 = getelementptr [3 x i8]* @S.790
	%90 = bitcast [3 x i8]* %89 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %88, [0 x i8]* %90)
	%91 = load %bout.BufIO** @llvm_f
	%92 = bitcast %bout.BufIO* %91 to %bout.BufIO*
	%93 = load %symb.SymbNode** %s
	%94 = getelementptr %symb.SymbNode* %93, i32 0, i32 22
	%95 = getelementptr [0 x i8]* %94
	%96 = bitcast [0 x i8]* %95 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %92, [0 x i8]* %96)
	%97 = load %bout.BufIO** @llvm_f
	%98 = bitcast %bout.BufIO* %97 to %bout.BufIO*
	%99 = getelementptr [11 x i8]* @S.791
	%100 = bitcast [11 x i8]* %99 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %98, [0 x i8]* %100)
	%101 = load %symb.SymbNode** %s
	%102 = getelementptr %symb.SymbNode* %101, i32 0, i32 1
	%103 = load %type.TypeNode** %102
	call void @llvm_PType(%type.TypeNode* %103)
	%104 = load %bout.BufIO** @llvm_f
	%105 = bitcast %bout.BufIO* %104 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %105)
	%106 = load %symb.SymbNode** %s
	%107 = getelementptr %symb.SymbNode* %106, i32 0, i32 0
	%108 = load %symb.SymbNode** %107
	%109 = bitcast %symb.SymbNode* %108 to %symb.SymbNode*
	store %symb.SymbNode* %109, %symb.SymbNode** %s
	br label %L.14
L.15:
	%110 = load %symb.SymbNode** %ps
	%111 = getelementptr %symb.SymbNode* %110, i32 0, i32 3
	%112 = load %symb.SymbNode** %111
	%113 = bitcast %symb.SymbNode* %112 to %symb.SymbNode*
	store %symb.SymbNode* %113, %symb.SymbNode** %s
	br label %L.17
L.17:
	%114 = load %symb.SymbNode** %s
	%115 = icmp ne %symb.SymbNode* %114, null
	%116 = xor i1 %115, true
	br i1 %116, label %L.18, label %L.19
L.19:
	%117 = load %bout.BufIO** @llvm_f
	%118 = bitcast %bout.BufIO* %117 to %bout.BufIO*
	%119 = getelementptr [8 x i8]* @S.792
	%120 = bitcast [8 x i8]* %119 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %118, [0 x i8]* %120)
	%121 = load %symb.SymbNode** %s
	%122 = getelementptr %symb.SymbNode* %121, i32 0, i32 1
	%123 = load %type.TypeNode** %122
	call void @llvm_PType(%type.TypeNode* %123)
	%124 = load %bout.BufIO** @llvm_f
	%125 = bitcast %bout.BufIO* %124 to %bout.BufIO*
	%126 = getelementptr [3 x i8]* @S.793
	%127 = bitcast [3 x i8]* %126 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %125, [0 x i8]* %127)
	%128 = load %bout.BufIO** @llvm_f
	%129 = bitcast %bout.BufIO* %128 to %bout.BufIO*
	%130 = load %symb.SymbNode** %s
	%131 = getelementptr %symb.SymbNode* %130, i32 0, i32 22
	%132 = getelementptr [0 x i8]* %131
	%133 = bitcast [0 x i8]* %132 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %129, [0 x i8]* %133)
	%134 = load %bout.BufIO** @llvm_f
	%135 = bitcast %bout.BufIO* %134 to %bout.BufIO*
	%136 = getelementptr [4 x i8]* @S.794
	%137 = bitcast [4 x i8]* %136 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %135, [0 x i8]* %137)
	%138 = load %symb.SymbNode** %s
	%139 = getelementptr %symb.SymbNode* %138, i32 0, i32 1
	%140 = load %type.TypeNode** %139
	call void @llvm_PType(%type.TypeNode* %140)
	%141 = load %bout.BufIO** @llvm_f
	%142 = bitcast %bout.BufIO* %141 to %bout.BufIO*
	%143 = getelementptr [4 x i8]* @S.795
	%144 = bitcast [4 x i8]* %143 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %142, [0 x i8]* %144)
	%145 = load %bout.BufIO** @llvm_f
	%146 = bitcast %bout.BufIO* %145 to %bout.BufIO*
	%147 = load %symb.SymbNode** %s
	%148 = getelementptr %symb.SymbNode* %147, i32 0, i32 22
	%149 = getelementptr [0 x i8]* %148
	%150 = bitcast [0 x i8]* %149 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %146, [0 x i8]* %150)
	%151 = load %bout.BufIO** @llvm_f
	%152 = bitcast %bout.BufIO* %151 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %152)
	%153 = getelementptr %A.3* @feature, i32 0, i32 3
	%154 = load i8* %153
	%155 = icmp ne i8 %154, 0
	br i1 %155, label %L.21, label %L.20
L.21:
	%156 = load %symb.SymbNode** %s
	%157 = call i16 @llvmdb_DefVar(%symb.SymbNode* %156)
	br label %L.20
L.20:
	%158 = load %symb.SymbNode** %s
	%159 = getelementptr %symb.SymbNode* %158, i32 0, i32 0
	%160 = load %symb.SymbNode** %159
	%161 = bitcast %symb.SymbNode* %160 to %symb.SymbNode*
	store %symb.SymbNode* %161, %symb.SymbNode** %s
	br label %L.17
L.18:
	%162 = load %ast.AstNode** %node
	%163 = getelementptr %ast.AstNode* %162, i32 0, i32 11
	%164 = getelementptr [0 x %ast.AstNode*]* %163, i32 0, i32 0
	%165 = load %ast.AstNode** %164
	%166 = bitcast %ast.AstNode* %165 to %ast.AstNode*
	%167 = call i8 @llvm_GenSub(%ast.AstNode* %166)
	%168 = icmp ne i8 %167, 0
	%169 = xor i1 %168, true
	br i1 %169, label %L.23, label %L.22
L.23:
	%170 = load %bout.BufIO** @llvm_f
	%171 = bitcast %bout.BufIO* %170 to %bout.BufIO*
	%172 = getelementptr [18 x i8]* @S.796
	%173 = bitcast [18 x i8]* %172 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %171, [0 x i8]* %173)
	%174 = load %ast.AstNode** %node
	call void @llvm_PEndLine(%ast.AstNode* %174)
	br label %L.22
L.22:
	%175 = load %bout.BufIO** @llvm_f
	%176 = bitcast %bout.BufIO* %175 to %bout.BufIO*
	%177 = getelementptr [9 x i8]* @S.797
	%178 = bitcast [9 x i8]* %177 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %176, [0 x i8]* %178)
	%179 = load %symb.SymbNode** %ps
	%180 = getelementptr %symb.SymbNode* %179, i32 0, i32 4
	%181 = load %type.TypeListEntry** %180
	store %type.TypeListEntry* %181, %type.TypeListEntry** %tl
	%182 = load %type.TypeListEntry** %tl
	%183 = icmp ne %type.TypeListEntry* %182, null
	br i1 %183, label %L.25, label %L.26
L.25:
	store i16 0, i16* %i
	br label %L.27
L.27:
	%184 = load %type.TypeListEntry** %tl
	%185 = icmp ne %type.TypeListEntry* %184, null
	%186 = xor i1 %185, true
	br i1 %186, label %L.28, label %L.29
L.29:
	%187 = load %bout.BufIO** @llvm_f
	%188 = bitcast %bout.BufIO* %187 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %188, i8 9)
	%189 = load i16* @llvm_Tseqno
	%190 = load i16* %i
	%191 = add i16 %189, %190
	call void @llvm_PTempName(i16 %191)
	%192 = load %bout.BufIO** @llvm_f
	%193 = bitcast %bout.BufIO* %192 to %bout.BufIO*
	%194 = getelementptr [9 x i8]* @S.798
	%195 = bitcast [9 x i8]* %194 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %193, [0 x i8]* %195)
	%196 = load %type.TypeListEntry** %tl
	%197 = getelementptr %type.TypeListEntry* %196, i32 0, i32 1
	%198 = load %type.TypeNode** %197
	%199 = bitcast %type.TypeNode* %198 to %type.TypeNode*
	call void @llvm_PType(%type.TypeNode* %199)
	%200 = load %bout.BufIO** @llvm_f
	%201 = bitcast %bout.BufIO* %200 to %bout.BufIO*
	%202 = getelementptr [3 x i8]* @S.799
	%203 = bitcast [3 x i8]* %202 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %201, [0 x i8]* %203)
	%204 = load i16* %i
	call void @llvm_PRetValName(i16 %204)
	%205 = load %bout.BufIO** @llvm_f
	%206 = bitcast %bout.BufIO* %205 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %206)
	%207 = load i16* %i
	%208 = add i16 %207, 1
	store i16 %208, i16* %i
	%209 = load %type.TypeListEntry** %tl
	%210 = getelementptr %type.TypeListEntry* %209, i32 0, i32 0
	%211 = load %type.TypeListEntry** %210
	%212 = bitcast %type.TypeListEntry* %211 to %type.TypeListEntry*
	store %type.TypeListEntry* %212, %type.TypeListEntry** %tl
	br label %L.27
L.28:
	%213 = load %symb.SymbNode** %ps
	%214 = getelementptr %symb.SymbNode* %213, i32 0, i32 4
	%215 = load %type.TypeListEntry** %214
	store %type.TypeListEntry* %215, %type.TypeListEntry** %tl
	store i16 0, i16* %i
	%216 = load %type.TypeListEntry** %tl
	%217 = getelementptr %type.TypeListEntry* %216, i32 0, i32 0
	%218 = load %type.TypeListEntry** %217
	%219 = icmp ne %type.TypeListEntry* %218, null
	br i1 %219, label %L.31, label %L.32
L.31:
	br label %L.33
L.33:
	%220 = load %bout.BufIO** @llvm_f
	%221 = bitcast %bout.BufIO* %220 to %bout.BufIO*
	%222 = getelementptr [6 x i8]* @S.800
	%223 = bitcast [6 x i8]* %222 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %221, [0 x i8]* %223)
	%224 = load %bout.BufIO** @llvm_f
	%225 = bitcast %bout.BufIO* %224 to %bout.BufIO*
	%226 = load i16* %i
	%227 = zext i16 %226 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %225, i32 %227)
	%228 = load %bout.BufIO** @llvm_f
	%229 = bitcast %bout.BufIO* %228 to %bout.BufIO*
	%230 = getelementptr [15 x i8]* @S.801
	%231 = bitcast [15 x i8]* %230 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %229, [0 x i8]* %231)
	%232 = load %symb.SymbNode** %ps
	%233 = getelementptr %symb.SymbNode* %232, i32 0, i32 4
	%234 = load %type.TypeListEntry** %233
	call void @llvm_PRetvType(%type.TypeListEntry* %234, i8 0)
	%235 = load i16* %i
	%236 = icmp eq i16 %235, 0
	br i1 %236, label %L.36, label %L.37
L.36:
	%237 = load %bout.BufIO** @llvm_f
	%238 = bitcast %bout.BufIO* %237 to %bout.BufIO*
	%239 = getelementptr [7 x i8]* @S.802
	%240 = bitcast [7 x i8]* %239 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %238, [0 x i8]* %240)
	br label %L.35
L.37:
	%241 = load %bout.BufIO** @llvm_f
	%242 = bitcast %bout.BufIO* %241 to %bout.BufIO*
	%243 = getelementptr [6 x i8]* @S.803
	%244 = bitcast [6 x i8]* %243 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %242, [0 x i8]* %244)
	%245 = load %bout.BufIO** @llvm_f
	%246 = bitcast %bout.BufIO* %245 to %bout.BufIO*
	%247 = load i16* %i
	%248 = zext i16 %247 to i32
	%249 = sub i32 %248, 1
	call void @bout_BufIO_uint(%bout.BufIO* %246, i32 %249)
	br label %L.35
L.35:
	%250 = load %bout.BufIO** @llvm_f
	%251 = bitcast %bout.BufIO* %250 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %251, i8 44)
	%252 = load %type.TypeListEntry** %tl
	%253 = getelementptr %type.TypeListEntry* %252, i32 0, i32 1
	%254 = load %type.TypeNode** %253
	%255 = bitcast %type.TypeNode* %254 to %type.TypeNode*
	call void @llvm_PType(%type.TypeNode* %255)
	%256 = load %bout.BufIO** @llvm_f
	%257 = bitcast %bout.BufIO* %256 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %257, i8 32)
	%258 = load i16* @llvm_Tseqno
	%259 = load i16* %i
	%260 = add i16 %258, %259
	call void @llvm_PTempName(i16 %260)
	%261 = load %bout.BufIO** @llvm_f
	%262 = bitcast %bout.BufIO* %261 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %262, i8 44)
	%263 = load %bout.BufIO** @llvm_f
	%264 = bitcast %bout.BufIO* %263 to %bout.BufIO*
	%265 = load i16* %i
	%266 = zext i16 %265 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %264, i32 %266)
	%267 = load %bout.BufIO** @llvm_f
	%268 = bitcast %bout.BufIO* %267 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %268)
	%269 = load i16* %i
	%270 = add i16 %269, 1
	store i16 %270, i16* %i
	%271 = load %type.TypeListEntry** %tl
	%272 = getelementptr %type.TypeListEntry* %271, i32 0, i32 0
	%273 = load %type.TypeListEntry** %272
	%274 = bitcast %type.TypeListEntry* %273 to %type.TypeListEntry*
	store %type.TypeListEntry* %274, %type.TypeListEntry** %tl
	%275 = load %type.TypeListEntry** %tl
	%276 = icmp eq %type.TypeListEntry* %275, null
	br i1 %276, label %L.34, label %L.38
L.38:
	br label %L.33
L.34:
	%277 = load %bout.BufIO** @llvm_f
	%278 = bitcast %bout.BufIO* %277 to %bout.BufIO*
	%279 = getelementptr [6 x i8]* @S.804
	%280 = bitcast [6 x i8]* %279 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %278, [0 x i8]* %280)
	%281 = load %symb.SymbNode** %ps
	%282 = getelementptr %symb.SymbNode* %281, i32 0, i32 4
	%283 = load %type.TypeListEntry** %282
	call void @llvm_PRetvType(%type.TypeListEntry* %283, i8 0)
	%284 = load %bout.BufIO** @llvm_f
	%285 = bitcast %bout.BufIO* %284 to %bout.BufIO*
	%286 = getelementptr [6 x i8]* @S.805
	%287 = bitcast [6 x i8]* %286 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %285, [0 x i8]* %287)
	%288 = load %bout.BufIO** @llvm_f
	%289 = bitcast %bout.BufIO* %288 to %bout.BufIO*
	%290 = load i16* %i
	%291 = zext i16 %290 to i32
	%292 = sub i32 %291, 1
	call void @bout_BufIO_uint(%bout.BufIO* %289, i32 %292)
	%293 = load %bout.BufIO** @llvm_f
	%294 = bitcast %bout.BufIO* %293 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %294)
	br label %L.30
L.32:
	%295 = load %bout.BufIO** @llvm_f
	%296 = bitcast %bout.BufIO* %295 to %bout.BufIO*
	%297 = getelementptr [6 x i8]* @S.806
	%298 = bitcast [6 x i8]* %297 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %296, [0 x i8]* %298)
	%299 = load %type.TypeListEntry** %tl
	%300 = getelementptr %type.TypeListEntry* %299, i32 0, i32 1
	%301 = load %type.TypeNode** %300
	%302 = bitcast %type.TypeNode* %301 to %type.TypeNode*
	call void @llvm_PType(%type.TypeNode* %302)
	%303 = load %bout.BufIO** @llvm_f
	%304 = bitcast %bout.BufIO* %303 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %304, i8 32)
	%305 = load i16* @llvm_Tseqno
	%306 = load i16* %i
	%307 = add i16 %305, %306
	call void @llvm_PTempName(i16 %307)
	br label %L.30
L.30:
	br label %L.24
L.26:
	%308 = load %bout.BufIO** @llvm_f
	%309 = bitcast %bout.BufIO* %308 to %bout.BufIO*
	%310 = getelementptr [10 x i8]* @S.807
	%311 = bitcast [10 x i8]* %310 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %309, [0 x i8]* %311)
	br label %L.24
L.24:
	%312 = load %bout.BufIO** @llvm_f
	%313 = bitcast %bout.BufIO* %312 to %bout.BufIO*
	%314 = getelementptr [4 x i8]* @S.808
	%315 = bitcast [4 x i8]* %314 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %313, [0 x i8]* %315)
	br label %L.1
L.1:
	br label %return
return:
	ret void
}
@S.809 = internal constant [7 x i8] c"\09%N = \00"
@S.810 = internal constant [13 x i8] c" %T %0N, %1N\00"
define internal zeroext i8 @llvm_BinaryOp(%ast.AstNode* %node$, [0 x i8]* %op$) nounwind {
L.0:
	%rv.0 = alloca i8
	%node = alloca %ast.AstNode*
	%op = alloca [0 x i8]*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	store [0 x i8]* %op$, [0 x i8]** %op
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 11
	%2 = getelementptr [0 x %ast.AstNode*]* %1, i32 0, i32 0
	%3 = load %ast.AstNode** %2
	%4 = bitcast %ast.AstNode* %3 to %ast.AstNode*
	%5 = call i8 @llvm_GenSub(%ast.AstNode* %4)
	%6 = load %ast.AstNode** %node
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 11
	%8 = getelementptr [0 x %ast.AstNode*]* %7, i32 0, i32 1
	%9 = load %ast.AstNode** %8
	%10 = bitcast %ast.AstNode* %9 to %ast.AstNode*
	%11 = call i8 @llvm_GenSub(%ast.AstNode* %10)
	%12 = load i16* @llvm_Tseqno
	%13 = load %ast.AstNode** %node
	%14 = getelementptr %ast.AstNode* %13, i32 0, i32 6
	store i16 %12, i16* %14
	%15 = load i16* @llvm_Tseqno
	%16 = add i16 %15, 1
	store i16 %16, i16* @llvm_Tseqno
	%17 = getelementptr [7 x i8]* @S.809
	%18 = bitcast [7 x i8]* %17 to [0 x i8]*
	%19 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %18, %ast.AstNode* %19)
	%20 = load %bout.BufIO** @llvm_f
	%21 = bitcast %bout.BufIO* %20 to %bout.BufIO*
	%22 = load [0 x i8]** %op
	%23 = bitcast [0 x i8]* %22 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %21, [0 x i8]* %23)
	%24 = getelementptr [13 x i8]* @S.810
	%25 = bitcast [13 x i8]* %24 to [0 x i8]*
	%26 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %25, %ast.AstNode* %26)
	%27 = load %ast.AstNode** %node
	call void @llvm_PEndLine(%ast.AstNode* %27)
	store i8 0, i8* %rv.0
	br label %return
return:
	%28 = load i8* %rv.0
	ret i8 %28
}
define internal zeroext i8 @llvm_SignedBinaryOp(%ast.AstNode* %node$, [0 x i8]* %uop$, [0 x i8]* %sop$) nounwind {
L.0:
	%rv.0 = alloca i8
	%node = alloca %ast.AstNode*
	%uop = alloca [0 x i8]*
	%sop = alloca [0 x i8]*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	store [0 x i8]* %uop$, [0 x i8]** %uop
	store [0 x i8]* %sop$, [0 x i8]** %sop
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 14
	%4 = load i8* %3
	%5 = icmp eq i8 %4, 3
	br i1 %5, label %L.2, label %L.3
L.2:
	%6 = load %ast.AstNode** %node
	%7 = load [0 x i8]** %sop
	%8 = bitcast [0 x i8]* %7 to [0 x i8]*
	%9 = call i8 @llvm_BinaryOp(%ast.AstNode* %6, [0 x i8]* %8)
	store i8 %9, i8* %rv.0
	br label %return
L.3:
	%10 = load %ast.AstNode** %node
	%11 = load [0 x i8]** %uop
	%12 = bitcast [0 x i8]* %11 to [0 x i8]*
	%13 = call i8 @llvm_BinaryOp(%ast.AstNode* %10, [0 x i8]* %12)
	store i8 %13, i8* %rv.0
	br label %return
L.1:
	br label %return
return:
	%14 = load i8* %rv.0
	ret i8 %14
}
@S.811 = internal constant [7 x i8] c"\09%N = \00"
@S.812 = internal constant [14 x i8] c" %0T %0N, %1N\00"
define internal zeroext i8 @llvm_CompareOp(%ast.AstNode* %node$, [0 x i8]* %op$) nounwind {
L.0:
	%rv.0 = alloca i8
	%node = alloca %ast.AstNode*
	%op = alloca [0 x i8]*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	store [0 x i8]* %op$, [0 x i8]** %op
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 11
	%2 = getelementptr [0 x %ast.AstNode*]* %1, i32 0, i32 0
	%3 = load %ast.AstNode** %2
	%4 = bitcast %ast.AstNode* %3 to %ast.AstNode*
	%5 = call i8 @llvm_GenSub(%ast.AstNode* %4)
	%6 = load %ast.AstNode** %node
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 11
	%8 = getelementptr [0 x %ast.AstNode*]* %7, i32 0, i32 1
	%9 = load %ast.AstNode** %8
	%10 = bitcast %ast.AstNode* %9 to %ast.AstNode*
	%11 = call i8 @llvm_GenSub(%ast.AstNode* %10)
	%12 = load i16* @llvm_Tseqno
	%13 = load %ast.AstNode** %node
	%14 = getelementptr %ast.AstNode* %13, i32 0, i32 6
	store i16 %12, i16* %14
	%15 = load i16* @llvm_Tseqno
	%16 = add i16 %15, 1
	store i16 %16, i16* @llvm_Tseqno
	%17 = getelementptr [7 x i8]* @S.811
	%18 = bitcast [7 x i8]* %17 to [0 x i8]*
	%19 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %18, %ast.AstNode* %19)
	%20 = load %bout.BufIO** @llvm_f
	%21 = bitcast %bout.BufIO* %20 to %bout.BufIO*
	%22 = load [0 x i8]** %op
	%23 = bitcast [0 x i8]* %22 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %21, [0 x i8]* %23)
	%24 = getelementptr [14 x i8]* @S.812
	%25 = bitcast [14 x i8]* %24 to [0 x i8]*
	%26 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %25, %ast.AstNode* %26)
	%27 = load %ast.AstNode** %node
	call void @llvm_PEndLine(%ast.AstNode* %27)
	store i8 1, i8* %rv.0
	br label %return
return:
	%28 = load i8* %rv.0
	ret i8 %28
}
@S.813 = internal constant [7 x i8] c"\09%N = \00"
@S.814 = internal constant [15 x i8] c" %0T %0N to %T\00"
define internal void @llvm_ChangeSize(%ast.AstNode* %node$, [0 x i8]* %op$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	%op = alloca [0 x i8]*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	store [0 x i8]* %op$, [0 x i8]** %op
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 11
	%2 = getelementptr [0 x %ast.AstNode*]* %1, i32 0, i32 0
	%3 = load %ast.AstNode** %2
	%4 = bitcast %ast.AstNode* %3 to %ast.AstNode*
	%5 = call i8 @llvm_GenSub(%ast.AstNode* %4)
	%6 = load i16* @llvm_Tseqno
	%7 = load %ast.AstNode** %node
	%8 = getelementptr %ast.AstNode* %7, i32 0, i32 6
	store i16 %6, i16* %8
	%9 = load i16* @llvm_Tseqno
	%10 = add i16 %9, 1
	store i16 %10, i16* @llvm_Tseqno
	%11 = getelementptr [7 x i8]* @S.813
	%12 = bitcast [7 x i8]* %11 to [0 x i8]*
	%13 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %12, %ast.AstNode* %13)
	%14 = load %bout.BufIO** @llvm_f
	%15 = bitcast %bout.BufIO* %14 to %bout.BufIO*
	%16 = load [0 x i8]** %op
	%17 = bitcast [0 x i8]* %16 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %15, [0 x i8]* %17)
	%18 = getelementptr [15 x i8]* @S.814
	%19 = bitcast [15 x i8]* %18 to [0 x i8]*
	%20 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %19, %ast.AstNode* %20)
	%21 = load %ast.AstNode** %node
	call void @llvm_PEndLine(%ast.AstNode* %21)
	br label %return
return:
	ret void
}
define internal zeroext i8 @llvm_IsPacked(%ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca i8
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	%3 = getelementptr %type.TypeNode* %2, i32 0, i32 14
	%4 = load i8* %3
	%5 = icmp ne i8 %4, 5
	br i1 %5, label %L.2, label %L.3
L.2:
	%6 = load %ast.AstNode** %node
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 8
	%8 = load %type.TypeNode** %7
	%9 = getelementptr %type.TypeNode* %8, i32 0, i32 21
	%10 = load i8* %9
	store i8 %10, i8* %rv.0
	br label %return
L.3:
	%11 = load %ast.AstNode** %node
	%12 = getelementptr %ast.AstNode* %11, i32 0, i32 8
	%13 = load %type.TypeNode** %12
	%14 = getelementptr %type.TypeNode* %13, i32 0, i32 0
	%15 = load %type.TypeNode** %14
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 21
	%17 = load i8* %16
	store i8 %17, i8* %rv.0
	br label %return
L.1:
	br label %return
return:
	%18 = load i8* %rv.0
	ret i8 %18
}
define internal i32 @llvm_BitfieldOffset(%ast.AstNode* %node$, i64 %fno$) nounwind {
L.0:
	%rv.0 = alloca i32
	%node = alloca %ast.AstNode*
	%fno = alloca i64
	store %ast.AstNode* %node$, %ast.AstNode** %node
	store i64 %fno$, i64* %fno
	%foffs = alloca i32
	%rsize = alloca i32
	%fsize = alloca i32
	%s = alloca %symb.SymbNode*
	%i = alloca i16
	%t = alloca %type.TypeNode*
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 8
	%2 = load %type.TypeNode** %1
	store %type.TypeNode* %2, %type.TypeNode** %t
	%3 = load %type.TypeNode** %t
	%4 = getelementptr %type.TypeNode* %3, i32 0, i32 14
	%5 = load i8* %4
	%6 = icmp eq i8 %5, 5
	br i1 %6, label %L.2, label %L.1
L.2:
	%7 = load %type.TypeNode** %t
	%8 = getelementptr %type.TypeNode* %7, i32 0, i32 0
	%9 = load %type.TypeNode** %8
	%10 = bitcast %type.TypeNode* %9 to %type.TypeNode*
	store %type.TypeNode* %10, %type.TypeNode** %t
	br label %L.1
L.1:
	%11 = load %type.TypeNode** %t
	%12 = getelementptr %type.TypeNode* %11, i32 0, i32 10
	%13 = load i32* %12
	store i32 %13, i32* %rsize
	%14 = load %type.TypeNode** %t
	%15 = getelementptr %type.TypeNode* %14, i32 0, i32 15
	%16 = load i8* %15
	%17 = icmp eq i8 %16, 1
	br i1 %17, label %L.4, label %L.5
L.4:
	%18 = load i32* %rsize
	store i32 %18, i32* %foffs
	br label %L.3
L.5:
	store i32 0, i32* %foffs
	br label %L.3
L.3:
	%19 = load %type.TypeNode** %t
	%20 = getelementptr %type.TypeNode* %19, i32 0, i32 4
	%21 = load %symb.SymbNode** %20
	%22 = bitcast %symb.SymbNode* %21 to %symb.SymbNode*
	store %symb.SymbNode* %22, %symb.SymbNode** %s
	store i16 0, i16* %i
	br label %L.6
L.6:
	%23 = load %symb.SymbNode** %s
	%24 = icmp ne %symb.SymbNode* %23, null
	%25 = xor i1 %24, true
	br i1 %25, label %L.7, label %L.8
L.8:
	%26 = load %symb.SymbNode** %s
	%27 = getelementptr %symb.SymbNode* %26, i32 0, i32 1
	%28 = load %type.TypeNode** %27
	%29 = getelementptr %type.TypeNode* %28, i32 0, i32 9
	%30 = load i32* %29
	store i32 %30, i32* %fsize
	%31 = load %type.TypeNode** %t
	%32 = getelementptr %type.TypeNode* %31, i32 0, i32 15
	%33 = load i8* %32
	%34 = icmp eq i8 %33, 1
	br i1 %34, label %L.10, label %L.9
L.10:
	%35 = load i32* %foffs
	%36 = load i32* %fsize
	%37 = sub i32 %35, %36
	store i32 %37, i32* %foffs
	br label %L.9
L.9:
	%38 = load i16* %i
	%39 = zext i16 %38 to i64
	%40 = load i64* %fno
	%41 = icmp eq i64 %39, %40
	br i1 %41, label %L.7, label %L.11
L.11:
	%42 = load %type.TypeNode** %t
	%43 = getelementptr %type.TypeNode* %42, i32 0, i32 15
	%44 = load i8* %43
	%45 = icmp ne i8 %44, 1
	br i1 %45, label %L.13, label %L.12
L.13:
	%46 = load i32* %foffs
	%47 = load i32* %fsize
	%48 = add i32 %46, %47
	store i32 %48, i32* %foffs
	br label %L.12
L.12:
	%49 = load %symb.SymbNode** %s
	%50 = getelementptr %symb.SymbNode* %49, i32 0, i32 0
	%51 = load %symb.SymbNode** %50
	%52 = bitcast %symb.SymbNode* %51 to %symb.SymbNode*
	store %symb.SymbNode* %52, %symb.SymbNode** %s
	%53 = load i16* %i
	%54 = add i16 %53, 1
	store i16 %54, i16* %i
	br label %L.6
L.7:
	%55 = load i32* %foffs
	store i32 %55, i32* %rv.0
	br label %return
return:
	%56 = load i32* %rv.0
	ret i32 %56
}
define internal %ast.AstNode* @llvm_BitfieldIndex(%ast.AstNode* %node$, i32 %size$, %ast.AstNode* %tree$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%node = alloca %ast.AstNode*
	%size = alloca i32
	%tree = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	store i32 %size$, i32* %size
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	%indx = alloca %ast.AstNode*
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 11
	%2 = getelementptr [0 x %ast.AstNode*]* %1, i32 0, i32 1
	%3 = load %ast.AstNode** %2
	%4 = bitcast %ast.AstNode* %3 to %ast.AstNode*
	%5 = load %type.TypeNode** @type_wordtype
	%6 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %4, %type.TypeNode* %5)
	store %ast.AstNode* %6, %ast.AstNode** %indx
	%7 = load %type.TypeNode** @type_wordtype
	%8 = load %ast.AstNode** %indx
	%9 = load %type.TypeNode** @type_wordtype
	%10 = load i32* %size
	%11 = zext i32 %10 to i64
	%12 = call %ast.AstNode* @ast_Const(%type.TypeNode* %9, i64 %11)
	%13 = call %ast.AstNode* @ast_New2(i8 51, %type.TypeNode* %7, %ast.AstNode* %8, %ast.AstNode* %12)
	store %ast.AstNode* %13, %ast.AstNode** %indx
	%14 = load %ast.AstNode** %tree
	%15 = icmp ne %ast.AstNode* %14, null
	br i1 %15, label %L.2, label %L.3
L.2:
	%16 = load %type.TypeNode** @type_wordtype
	%17 = load %ast.AstNode** %tree
	%18 = load %ast.AstNode** %indx
	%19 = call %ast.AstNode* @ast_New2(i8 49, %type.TypeNode* %16, %ast.AstNode* %17, %ast.AstNode* %18)
	store %ast.AstNode* %19, %ast.AstNode** %tree
	br label %L.1
L.3:
	%20 = load %ast.AstNode** %indx
	store %ast.AstNode* %20, %ast.AstNode** %tree
	br label %L.1
L.1:
	%21 = load %ast.AstNode** %tree
	store %ast.AstNode* %21, %ast.AstNode** %rv.0
	br label %return
return:
	%22 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %22
}
define internal { %ast.AstNode*, %ast.AstNode*, %ast.AstNode* } @llvm_BitfieldRewrite(%ast.AstNode* %offs$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%rv.1 = alloca %ast.AstNode*
	%rv.2 = alloca %ast.AstNode*
	%offs = alloca %ast.AstNode*
	store %ast.AstNode* %offs$, %ast.AstNode** %offs
	%varb = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%shft = alloca i32
	%t = alloca %type.TypeNode*
	store i32 0, i32* %shft
	store %ast.AstNode* null, %ast.AstNode** %varb
	br label %L.1
L.1:
	%0 = load %ast.AstNode** %offs
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 0
	%2 = load i8* %1
	%3 = zext i8 %2 to i32
	switch i32 %3, label %L.3 [
		i32 13, label %L.5
		i32 14, label %L.6
		i32 15, label %L.7
	]
L.5:
	%4 = load i32* %shft
	%5 = load %ast.AstNode** %offs
	%6 = getelementptr %ast.AstNode* %5, i32 0, i32 11
	%7 = getelementptr [0 x %ast.AstNode*]* %6, i32 0, i32 0
	%8 = load %ast.AstNode** %7
	%9 = bitcast %ast.AstNode* %8 to %ast.AstNode*
	%10 = load %ast.AstNode** %offs
	%11 = getelementptr %ast.AstNode* %10, i32 0, i32 10
	%12 = load i64* %11
	%13 = call i32 @llvm_BitfieldOffset(%ast.AstNode* %9, i64 %12)
	%14 = add i32 %4, %13
	store i32 %14, i32* %shft
	br label %L.4
L.6:
	%15 = load %ast.AstNode** %offs
	%16 = load %ast.AstNode** %offs
	%17 = getelementptr %ast.AstNode* %16, i32 0, i32 8
	%18 = load %type.TypeNode** %17
	%19 = getelementptr %type.TypeNode* %18, i32 0, i32 0
	%20 = load %type.TypeNode** %19
	%21 = getelementptr %type.TypeNode* %20, i32 0, i32 9
	%22 = load i32* %21
	%23 = load %ast.AstNode** %varb
	%24 = call %ast.AstNode* @llvm_BitfieldIndex(%ast.AstNode* %15, i32 %22, %ast.AstNode* %23)
	store %ast.AstNode* %24, %ast.AstNode** %varb
	br label %L.4
L.7:
	%25 = load %ast.AstNode** %offs
	%26 = load %ast.AstNode** %offs
	%27 = getelementptr %ast.AstNode* %26, i32 0, i32 8
	%28 = load %type.TypeNode** %27
	%29 = getelementptr %type.TypeNode* %28, i32 0, i32 0
	%30 = load %type.TypeNode** %29
	%31 = getelementptr %type.TypeNode* %30, i32 0, i32 9
	%32 = load i32* %31
	%33 = load %ast.AstNode** %varb
	%34 = call %ast.AstNode* @llvm_BitfieldIndex(%ast.AstNode* %25, i32 %32, %ast.AstNode* %33)
	store %ast.AstNode* %34, %ast.AstNode** %varb
	br label %L.4
L.3:
	br label %L.4
L.4:
	%35 = load %ast.AstNode** %offs
	%36 = getelementptr %ast.AstNode* %35, i32 0, i32 11
	%37 = getelementptr [0 x %ast.AstNode*]* %36, i32 0, i32 0
	%38 = load %ast.AstNode** %37
	%39 = bitcast %ast.AstNode* %38 to %ast.AstNode*
	store %ast.AstNode* %39, %ast.AstNode** %offs
	%40 = load %ast.AstNode** %offs
	%41 = getelementptr %ast.AstNode* %40, i32 0, i32 0
	%42 = load i8* %41
	%43 = icmp ult i8 %42, 13
	br i1 %43, label %L.12, label %L.11
L.11:
	%44 = load %ast.AstNode** %offs
	%45 = getelementptr %ast.AstNode* %44, i32 0, i32 0
	%46 = load i8* %45
	%47 = icmp ugt i8 %46, 15
	br label %L.12
L.12:
	%48 = phi i1 [ true, %L.4 ], [ %47, %L.11 ]
	br i1 %48, label %L.10, label %L.9
L.9:
	%49 = load %ast.AstNode** %offs
	%50 = getelementptr %ast.AstNode* %49, i32 0, i32 11
	%51 = getelementptr [0 x %ast.AstNode*]* %50, i32 0, i32 0
	%52 = load %ast.AstNode** %51
	%53 = bitcast %ast.AstNode* %52 to %ast.AstNode*
	%54 = call i8 @llvm_IsPacked(%ast.AstNode* %53)
	%55 = icmp ne i8 %54, 0
	%56 = xor i1 %55, true
	br label %L.10
L.10:
	%57 = phi i1 [ true, %L.12 ], [ %56, %L.9 ]
	br i1 %57, label %L.2, label %L.8
L.8:
	br label %L.1
L.2:
	%58 = load i32* %shft
	%59 = icmp ne i32 %58, 0
	br i1 %59, label %L.14, label %L.13
L.14:
	%60 = load %type.TypeNode** @type_wordtype
	%61 = load i32* %shft
	%62 = zext i32 %61 to i64
	%63 = call %ast.AstNode* @ast_Const(%type.TypeNode* %60, i64 %62)
	store %ast.AstNode* %63, %ast.AstNode** %tree
	%64 = load %ast.AstNode** %varb
	%65 = icmp ne %ast.AstNode* %64, null
	br i1 %65, label %L.16, label %L.17
L.16:
	%66 = load %type.TypeNode** @type_wordtype
	%67 = load %ast.AstNode** %varb
	%68 = load %ast.AstNode** %tree
	%69 = call %ast.AstNode* @ast_New2(i8 49, %type.TypeNode* %66, %ast.AstNode* %67, %ast.AstNode* %68)
	store %ast.AstNode* %69, %ast.AstNode** %varb
	br label %L.15
L.17:
	%70 = load %ast.AstNode** %tree
	store %ast.AstNode* %70, %ast.AstNode** %varb
	br label %L.15
L.15:
	br label %L.13
L.13:
	%71 = load %ast.AstNode** %offs
	%72 = getelementptr %ast.AstNode* %71, i32 0, i32 8
	%73 = load %type.TypeNode** %72
	store %type.TypeNode* %73, %type.TypeNode** %t
	%74 = load %type.TypeNode** %t
	%75 = getelementptr %type.TypeNode* %74, i32 0, i32 14
	%76 = load i8* %75
	%77 = icmp ne i8 %76, 5
	br i1 %77, label %L.19, label %L.20
L.19:
	%78 = load %ast.AstNode** %offs
	store %ast.AstNode* %78, %ast.AstNode** %tree
	%79 = load %type.TypeNode** @type_wordtype
	%80 = load %ast.AstNode** %tree
	%81 = getelementptr %ast.AstNode* %80, i32 0, i32 8
	store %type.TypeNode* %79, %type.TypeNode** %81
	%82 = load %type.TypeNode** @type_wordtype
	%83 = getelementptr %type.TypeNode* %82, i32 0, i32 10
	%84 = load i32* %83
	%85 = load %ast.AstNode** %tree
	%86 = getelementptr %ast.AstNode* %85, i32 0, i32 7
	store i32 %84, i32* %86
	br label %L.18
L.20:
	%87 = load %type.TypeNode** %t
	%88 = getelementptr %type.TypeNode* %87, i32 0, i32 0
	%89 = load %type.TypeNode** %88
	%90 = bitcast %type.TypeNode* %89 to %type.TypeNode*
	store %type.TypeNode* %90, %type.TypeNode** %t
	%91 = load %type.TypeNode** %t
	%92 = getelementptr %type.TypeNode* %91, i32 0, i32 10
	%93 = load i32* %92
	%94 = call %type.TypeNode* @target_utype(i32 %93)
	%95 = load %ast.AstNode** %offs
	%96 = call %ast.AstNode* @ast_New1(i8 27, %type.TypeNode* %94, %ast.AstNode* %95)
	store %ast.AstNode* %96, %ast.AstNode** %tree
	%97 = load %ast.AstNode** %tree
	%98 = getelementptr %ast.AstNode* %97, i32 0, i32 8
	%99 = load %type.TypeNode** %98
	%100 = getelementptr %type.TypeNode* %99, i32 0, i32 10
	%101 = load i32* %100
	%102 = load %ast.AstNode** %tree
	%103 = getelementptr %ast.AstNode* %102, i32 0, i32 7
	store i32 %101, i32* %103
	%104 = load %ast.AstNode** %tree
	%105 = getelementptr %ast.AstNode* %104, i32 0, i32 7
	%106 = load i32* %105
	%107 = load %target.ModelT** @target_Target
	%108 = getelementptr %target.ModelT* %107, i32 0, i32 2
	%109 = load i8* %108
	%110 = zext i8 %109 to i32
	%111 = icmp ugt i32 %106, %110
	br i1 %111, label %L.21, label %L.22
L.21:
	%112 = load %type.TypeNode** %t
	%113 = getelementptr %type.TypeNode* %112, i32 0, i32 16
	%114 = load i8* %113
	%115 = load %target.ModelT** @target_Target
	%116 = getelementptr %target.ModelT* %115, i32 0, i32 0
	%117 = load i8* %116
	%118 = icmp ne i8 %114, %117
	br label %L.22
L.22:
	%119 = phi i1 [ false, %L.20 ], [ %118, %L.21 ]
	br i1 %119, label %L.24, label %L.23
L.24:
	%120 = load %ast.AstNode** %tree
	%121 = getelementptr %ast.AstNode* %120, i32 0, i32 8
	%122 = load %type.TypeNode** %121
	%123 = load %ast.AstNode** %tree
	%124 = call %ast.AstNode* @ast_New1(i8 32, %type.TypeNode* %122, %ast.AstNode* %123)
	store %ast.AstNode* %124, %ast.AstNode** %tree
	br label %L.23
L.23:
	br label %L.18
L.18:
	%125 = load %ast.AstNode** %tree
	%126 = load %type.TypeNode** @type_wordtype
	%127 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %125, %type.TypeNode* %126)
	store %ast.AstNode* %127, %ast.AstNode** %tree
	%128 = load %ast.AstNode** %tree
	store %ast.AstNode* %128, %ast.AstNode** %rv.0
	%129 = load %ast.AstNode** %varb
	store %ast.AstNode* %129, %ast.AstNode** %rv.1
	%130 = load %ast.AstNode** %offs
	store %ast.AstNode* %130, %ast.AstNode** %rv.2
	br label %return
return:
	%131 = load %ast.AstNode** %rv.0
	%132 = load %ast.AstNode** %rv.1
	%133 = load %ast.AstNode** %rv.2
	%mrv0 = insertvalue { %ast.AstNode*, %ast.AstNode*, %ast.AstNode* } undef,%ast.AstNode* %131,0
	%mrv1 = insertvalue { %ast.AstNode*, %ast.AstNode*, %ast.AstNode* } %mrv0,%ast.AstNode* %132,1
	%mrv2 = insertvalue { %ast.AstNode*, %ast.AstNode*, %ast.AstNode* } %mrv1,%ast.AstNode* %133,2
	ret  { %ast.AstNode*, %ast.AstNode*, %ast.AstNode* } %mrv2

}
@S.815 = internal constant [31 x i8] c"BitfieldMask of variable SLICE\00"
define internal %ast.AstNode* @llvm_BitfieldMask(%ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca %ast.AstNode*
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%mask = alloca %ast.AstNode*
	%bits = alloca i64
	%size = alloca i32
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 0
	%2 = load i8* %1
	%3 = icmp eq i8 %2, 15
	br i1 %3, label %L.2, label %L.3
L.2:
	%4 = load %ast.AstNode** %node
	%5 = getelementptr %ast.AstNode* %4, i32 0, i32 11
	%6 = getelementptr [0 x %ast.AstNode*]* %5, i32 0, i32 2
	%7 = load %ast.AstNode** %6
	%8 = getelementptr %ast.AstNode* %7, i32 0, i32 0
	%9 = load i8* %8
	%10 = icmp ne i8 %9, 7
	br i1 %10, label %L.5, label %L.6
L.5:
	%11 = getelementptr [31 x i8]* @S.815
	%12 = bitcast [31 x i8]* %11 to [0 x i8]*
	call void @lex_ErrorS(i8 86, [0 x i8]* %12)
	br label %L.4
L.6:
	%13 = load %ast.AstNode** %node
	%14 = getelementptr %ast.AstNode* %13, i32 0, i32 8
	%15 = load %type.TypeNode** %14
	%16 = getelementptr %type.TypeNode* %15, i32 0, i32 0
	%17 = load %type.TypeNode** %16
	%18 = getelementptr %type.TypeNode* %17, i32 0, i32 9
	%19 = load i32* %18
	store i32 %19, i32* %size
	%20 = load i32* %size
	%21 = load %ast.AstNode** %node
	%22 = getelementptr %ast.AstNode* %21, i32 0, i32 11
	%23 = getelementptr [0 x %ast.AstNode*]* %22, i32 0, i32 2
	%24 = load %ast.AstNode** %23
	%25 = getelementptr %ast.AstNode* %24, i32 0, i32 10
	%26 = load i64* %25
	%27 = trunc i64 %26 to i32
	%28 = mul i32 %20, %27
	store i32 %28, i32* %size
	br label %L.4
L.4:
	br label %L.1
L.3:
	%29 = load %ast.AstNode** %node
	%30 = getelementptr %ast.AstNode* %29, i32 0, i32 8
	%31 = load %type.TypeNode** %30
	%32 = getelementptr %type.TypeNode* %31, i32 0, i32 0
	%33 = load %type.TypeNode** %32
	%34 = getelementptr %type.TypeNode* %33, i32 0, i32 9
	%35 = load i32* %34
	store i32 %35, i32* %size
	br label %L.1
L.1:
	%36 = load i32* %size
	%37 = zext i32 %36 to i64
	%38 = shl i64 1, %37
	%39 = sub i64 %38, 1
	store i64 %39, i64* %bits
	%40 = load %type.TypeNode** @type_wordtype
	%41 = load i64* %bits
	%42 = call %ast.AstNode* @ast_Const(%type.TypeNode* %40, i64 %41)
	store %ast.AstNode* %42, %ast.AstNode** %mask
	%43 = load %ast.AstNode** %mask
	store %ast.AstNode* %43, %ast.AstNode** %rv.0
	br label %return
return:
	%44 = load %ast.AstNode** %rv.0
	ret %ast.AstNode* %44
}
define internal void @llvm_LoadPacked(%ast.AstNode* %load$, %ast.AstNode* %offs$) nounwind {
L.0:
	%load = alloca %ast.AstNode*
	%offs = alloca %ast.AstNode*
	store %ast.AstNode* %load$, %ast.AstNode** %load
	store %ast.AstNode* %offs$, %ast.AstNode** %offs
	%tree = alloca %ast.AstNode*
	%varb = alloca %ast.AstNode*
	%mask = alloca %ast.AstNode*
	%0 = load %ast.AstNode** %offs
	%1 = call %ast.AstNode* @llvm_BitfieldMask(%ast.AstNode* %0)
	store %ast.AstNode* %1, %ast.AstNode** %mask
	%2 = load %ast.AstNode** %offs
	%3 = call { %ast.AstNode*, %ast.AstNode*, %ast.AstNode* } @llvm_BitfieldRewrite(%ast.AstNode* %2)
	%4 = extractvalue  { %ast.AstNode*, %ast.AstNode*, %ast.AstNode* } %3, 0
	%5 = extractvalue  { %ast.AstNode*, %ast.AstNode*, %ast.AstNode* } %3, 1
	%6 = extractvalue  { %ast.AstNode*, %ast.AstNode*, %ast.AstNode* } %3, 2
	store %ast.AstNode* %4, %ast.AstNode** %tree
	store %ast.AstNode* %5, %ast.AstNode** %varb
	store %ast.AstNode* %6, %ast.AstNode** %offs
	%7 = load %ast.AstNode** %varb
	%8 = icmp ne %ast.AstNode* %7, null
	br i1 %8, label %L.2, label %L.1
L.2:
	%9 = load %type.TypeNode** @type_wordtype
	%10 = load %ast.AstNode** %tree
	%11 = load %ast.AstNode** %varb
	%12 = call %ast.AstNode* @ast_New2(i8 69, %type.TypeNode* %9, %ast.AstNode* %10, %ast.AstNode* %11)
	store %ast.AstNode* %12, %ast.AstNode** %tree
	br label %L.1
L.1:
	%13 = load %type.TypeNode** @type_wordtype
	%14 = load %ast.AstNode** %tree
	%15 = load %ast.AstNode** %mask
	%16 = call %ast.AstNode* @ast_New2(i8 72, %type.TypeNode* %13, %ast.AstNode* %14, %ast.AstNode* %15)
	store %ast.AstNode* %16, %ast.AstNode** %tree
	%17 = load %ast.AstNode** %tree
	%18 = load %ast.AstNode** %load
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 7
	%20 = load i32* %19
	%21 = call %ast.AstNode* @ast_Extend(%ast.AstNode* %17, i32 %20, i8 1)
	store %ast.AstNode* %21, %ast.AstNode** %tree
	%22 = load %ast.AstNode** %tree
	%23 = call i8 @llvm_GenSub(%ast.AstNode* %22)
	%24 = load %ast.AstNode** %tree
	%25 = bitcast %ast.AstNode* %24 to %ast.AstNode*
	%26 = load %ast.AstNode** %load
	%27 = getelementptr %ast.AstNode* %26, i32 0, i32 11
	%28 = getelementptr [0 x %ast.AstNode*]* %27, i32 0, i32 0
	store %ast.AstNode* %25, %ast.AstNode** %28
	%29 = load %ast.AstNode** %tree
	%30 = getelementptr %ast.AstNode* %29, i32 0, i32 6
	%31 = load i16* %30
	%32 = load %ast.AstNode** %load
	%33 = getelementptr %ast.AstNode* %32, i32 0, i32 6
	store i16 %31, i16* %33
	br label %return
return:
	ret void
}
@S.816 = internal constant [12 x i8] c"\09%N = load \00"
@S.817 = internal constant [10 x i8] c"volatile \00"
@S.818 = internal constant [8 x i8] c"%T* %0N\00"
@S.819 = internal constant [9 x i8] c", align \00"
define internal void @llvm_Load(%ast.AstNode* %load$) nounwind {
L.0:
	%load = alloca %ast.AstNode*
	store %ast.AstNode* %load$, %ast.AstNode** %load
	%offs = alloca %ast.AstNode*
	%0 = load %ast.AstNode** %load
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 11
	%2 = getelementptr [0 x %ast.AstNode*]* %1, i32 0, i32 0
	%3 = load %ast.AstNode** %2
	%4 = bitcast %ast.AstNode* %3 to %ast.AstNode*
	store %ast.AstNode* %4, %ast.AstNode** %offs
	%5 = load %ast.AstNode** %offs
	%6 = getelementptr %ast.AstNode* %5, i32 0, i32 0
	%7 = load i8* %6
	%8 = icmp uge i8 %7, 13
	br i1 %8, label %L.3, label %L.4
L.3:
	%9 = load %ast.AstNode** %offs
	%10 = getelementptr %ast.AstNode* %9, i32 0, i32 0
	%11 = load i8* %10
	%12 = icmp ule i8 %11, 15
	br label %L.4
L.4:
	%13 = phi i1 [ false, %L.0 ], [ %12, %L.3 ]
	br i1 %13, label %L.1, label %L.2
L.1:
	%14 = load %ast.AstNode** %offs
	%15 = getelementptr %ast.AstNode* %14, i32 0, i32 11
	%16 = getelementptr [0 x %ast.AstNode*]* %15, i32 0, i32 0
	%17 = load %ast.AstNode** %16
	%18 = bitcast %ast.AstNode* %17 to %ast.AstNode*
	%19 = call i8 @llvm_IsPacked(%ast.AstNode* %18)
	%20 = icmp ne i8 %19, 0
	br label %L.2
L.2:
	%21 = phi i1 [ false, %L.4 ], [ %20, %L.1 ]
	br i1 %21, label %L.6, label %L.7
L.6:
	%22 = load %ast.AstNode** %load
	%23 = load %ast.AstNode** %offs
	call void @llvm_LoadPacked(%ast.AstNode* %22, %ast.AstNode* %23)
	br label %L.5
L.7:
	%24 = load %ast.AstNode** %offs
	%25 = call i8 @llvm_GenSub(%ast.AstNode* %24)
	%26 = load i16* @llvm_Tseqno
	%27 = load %ast.AstNode** %load
	%28 = getelementptr %ast.AstNode* %27, i32 0, i32 6
	store i16 %26, i16* %28
	%29 = load i16* @llvm_Tseqno
	%30 = add i16 %29, 1
	store i16 %30, i16* @llvm_Tseqno
	%31 = getelementptr [12 x i8]* @S.816
	%32 = bitcast [12 x i8]* %31 to [0 x i8]*
	%33 = load %ast.AstNode** %load
	call void @llvm_Print([0 x i8]* %32, %ast.AstNode* %33)
	%34 = load %ast.AstNode** %offs
	%35 = getelementptr %ast.AstNode* %34, i32 0, i32 8
	%36 = load %type.TypeNode** %35
	%37 = getelementptr %type.TypeNode* %36, i32 0, i32 0
	%38 = load %type.TypeNode** %37
	%39 = getelementptr %type.TypeNode* %38, i32 0, i32 26
	%40 = load i8* %39
	%41 = icmp ne i8 %40, 0
	br i1 %41, label %L.9, label %L.8
L.9:
	%42 = load %bout.BufIO** @llvm_f
	%43 = bitcast %bout.BufIO* %42 to %bout.BufIO*
	%44 = getelementptr [10 x i8]* @S.817
	%45 = bitcast [10 x i8]* %44 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %43, [0 x i8]* %45)
	br label %L.8
L.8:
	%46 = getelementptr [8 x i8]* @S.818
	%47 = bitcast [8 x i8]* %46 to [0 x i8]*
	%48 = load %ast.AstNode** %load
	call void @llvm_Print([0 x i8]* %47, %ast.AstNode* %48)
	%49 = load %ast.AstNode** %offs
	%50 = getelementptr %ast.AstNode* %49, i32 0, i32 8
	%51 = load %type.TypeNode** %50
	%52 = getelementptr %type.TypeNode* %51, i32 0, i32 0
	%53 = load %type.TypeNode** %52
	%54 = getelementptr %type.TypeNode* %53, i32 0, i32 22
	%55 = load i8* %54
	%56 = icmp ne i8 %55, 0
	br i1 %56, label %L.11, label %L.10
L.11:
	%57 = load %bout.BufIO** @llvm_f
	%58 = bitcast %bout.BufIO* %57 to %bout.BufIO*
	%59 = getelementptr [9 x i8]* @S.819
	%60 = bitcast [9 x i8]* %59 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %58, [0 x i8]* %60)
	%61 = load %bout.BufIO** @llvm_f
	%62 = bitcast %bout.BufIO* %61 to %bout.BufIO*
	%63 = load %ast.AstNode** %offs
	%64 = getelementptr %ast.AstNode* %63, i32 0, i32 8
	%65 = load %type.TypeNode** %64
	%66 = getelementptr %type.TypeNode* %65, i32 0, i32 0
	%67 = load %type.TypeNode** %66
	%68 = getelementptr %type.TypeNode* %67, i32 0, i32 11
	%69 = load i32* %68
	%70 = zext i32 %69 to i64
	%71 = load %target.ModelT** @target_Target
	%72 = getelementptr %target.ModelT* %71, i32 0, i32 2
	%73 = load i8* %72
	%74 = zext i8 %73 to i64
	%75 = udiv i64 %70, %74
	call void @bout_BufIO_uint64(%bout.BufIO* %62, i64 %75)
	br label %L.10
L.10:
	%76 = load %ast.AstNode** %load
	call void @llvm_PEndLine(%ast.AstNode* %76)
	br label %L.5
L.5:
	br label %return
return:
	ret void
}
@S.820 = internal constant [7 x i8] c"store \00"
@S.821 = internal constant [10 x i8] c"volatile \00"
@S.822 = internal constant [8 x i8] c", %K %D\00"
@S.823 = internal constant [9 x i8] c", align \00"
define internal void @llvm_Store(%ast.AstNode* %store$) nounwind {
L.0:
	%store = alloca %ast.AstNode*
	store %ast.AstNode* %store$, %ast.AstNode** %store
	%rhs = alloca %ast.AstNode*
	%lhs = alloca %ast.AstNode*
	%varb = alloca %ast.AstNode*
	%tree = alloca %ast.AstNode*
	%mask = alloca %ast.AstNode*
	%i = alloca i16
	%n = alloca i16
	store i16 0, i16* %i
	%0 = load %ast.AstNode** %store
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 2
	%2 = load i16* %1
	%3 = udiv i16 %2, 2
	store i16 %3, i16* %n
	br label %L.1
L.1:
	%4 = load i16* %i
	%5 = load i16* %n
	%6 = icmp ult i16 %4, %5
	%7 = xor i1 %6, true
	br i1 %7, label %L.2, label %L.3
L.3:
	%8 = load %ast.AstNode** %store
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 11
	%10 = load i16* %i
	%11 = zext i16 %10 to i32
	%12 = getelementptr [0 x %ast.AstNode*]* %9, i32 0, i32 %11
	%13 = load %ast.AstNode** %12
	%14 = bitcast %ast.AstNode* %13 to %ast.AstNode*
	store %ast.AstNode* %14, %ast.AstNode** %lhs
	%15 = load %ast.AstNode** %store
	%16 = getelementptr %ast.AstNode* %15, i32 0, i32 11
	%17 = load i16* %n
	%18 = load i16* %i
	%19 = add i16 %17, %18
	%20 = zext i16 %19 to i32
	%21 = getelementptr [0 x %ast.AstNode*]* %16, i32 0, i32 %20
	%22 = load %ast.AstNode** %21
	%23 = bitcast %ast.AstNode* %22 to %ast.AstNode*
	store %ast.AstNode* %23, %ast.AstNode** %rhs
	%24 = load %ast.AstNode** %lhs
	%25 = icmp ne %ast.AstNode* %24, null
	br i1 %25, label %L.8, label %L.9
L.8:
	%26 = load %ast.AstNode** %lhs
	%27 = getelementptr %ast.AstNode* %26, i32 0, i32 0
	%28 = load i8* %27
	%29 = icmp uge i8 %28, 13
	br label %L.9
L.9:
	%30 = phi i1 [ false, %L.3 ], [ %29, %L.8 ]
	br i1 %30, label %L.6, label %L.7
L.6:
	%31 = load %ast.AstNode** %lhs
	%32 = getelementptr %ast.AstNode* %31, i32 0, i32 0
	%33 = load i8* %32
	%34 = icmp ule i8 %33, 15
	br label %L.7
L.7:
	%35 = phi i1 [ false, %L.9 ], [ %34, %L.6 ]
	br i1 %35, label %L.4, label %L.5
L.4:
	%36 = load %ast.AstNode** %lhs
	%37 = getelementptr %ast.AstNode* %36, i32 0, i32 11
	%38 = getelementptr [0 x %ast.AstNode*]* %37, i32 0, i32 0
	%39 = load %ast.AstNode** %38
	%40 = bitcast %ast.AstNode* %39 to %ast.AstNode*
	%41 = call i8 @llvm_IsPacked(%ast.AstNode* %40)
	%42 = icmp ne i8 %41, 0
	br label %L.5
L.5:
	%43 = phi i1 [ false, %L.7 ], [ %42, %L.4 ]
	br i1 %43, label %L.11, label %L.10
L.11:
	%44 = load %ast.AstNode** %lhs
	%45 = call %ast.AstNode* @llvm_BitfieldMask(%ast.AstNode* %44)
	store %ast.AstNode* %45, %ast.AstNode** %mask
	%46 = load %ast.AstNode** %lhs
	%47 = call { %ast.AstNode*, %ast.AstNode*, %ast.AstNode* } @llvm_BitfieldRewrite(%ast.AstNode* %46)
	%48 = extractvalue  { %ast.AstNode*, %ast.AstNode*, %ast.AstNode* } %47, 0
	%49 = extractvalue  { %ast.AstNode*, %ast.AstNode*, %ast.AstNode* } %47, 1
	%50 = extractvalue  { %ast.AstNode*, %ast.AstNode*, %ast.AstNode* } %47, 2
	store %ast.AstNode* %48, %ast.AstNode** %tree
	store %ast.AstNode* %49, %ast.AstNode** %varb
	store %ast.AstNode* %50, %ast.AstNode** %lhs
	%51 = load %ast.AstNode** %varb
	%52 = icmp ne %ast.AstNode* %51, null
	br i1 %52, label %L.13, label %L.12
L.13:
	%53 = load %type.TypeNode** @type_wordtype
	%54 = load %ast.AstNode** %mask
	%55 = load %ast.AstNode** %varb
	%56 = call %ast.AstNode* @ast_New2(i8 68, %type.TypeNode* %53, %ast.AstNode* %54, %ast.AstNode* %55)
	store %ast.AstNode* %56, %ast.AstNode** %mask
	br label %L.12
L.12:
	%57 = load %type.TypeNode** @type_wordtype
	%58 = load %ast.AstNode** %mask
	%59 = call %ast.AstNode* @ast_New1(i8 34, %type.TypeNode* %57, %ast.AstNode* %58)
	store %ast.AstNode* %59, %ast.AstNode** %mask
	%60 = load %type.TypeNode** @type_wordtype
	%61 = load %ast.AstNode** %tree
	%62 = load %ast.AstNode** %mask
	%63 = call %ast.AstNode* @ast_New2(i8 72, %type.TypeNode* %60, %ast.AstNode* %61, %ast.AstNode* %62)
	store %ast.AstNode* %63, %ast.AstNode** %tree
	%64 = load %ast.AstNode** %rhs
	%65 = load %type.TypeNode** @type_wordtype
	%66 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %64, %type.TypeNode* %65)
	store %ast.AstNode* %66, %ast.AstNode** %rhs
	%67 = load %ast.AstNode** %varb
	%68 = icmp ne %ast.AstNode* %67, null
	br i1 %68, label %L.15, label %L.14
L.15:
	%69 = load %type.TypeNode** @type_wordtype
	%70 = load %ast.AstNode** %rhs
	%71 = load %ast.AstNode** %varb
	%72 = call %ast.AstNode* @ast_New2(i8 68, %type.TypeNode* %69, %ast.AstNode* %70, %ast.AstNode* %71)
	store %ast.AstNode* %72, %ast.AstNode** %rhs
	br label %L.14
L.14:
	%73 = load %type.TypeNode** @type_wordtype
	%74 = load %ast.AstNode** %tree
	%75 = load %ast.AstNode** %rhs
	%76 = call %ast.AstNode* @ast_New2(i8 73, %type.TypeNode* %73, %ast.AstNode* %74, %ast.AstNode* %75)
	store %ast.AstNode* %76, %ast.AstNode** %rhs
	%77 = load %ast.AstNode** %rhs
	%78 = load %ast.AstNode** %lhs
	%79 = getelementptr %ast.AstNode* %78, i32 0, i32 8
	%80 = load %type.TypeNode** %79
	%81 = getelementptr %type.TypeNode* %80, i32 0, i32 0
	%82 = load %type.TypeNode** %81
	%83 = getelementptr %type.TypeNode* %82, i32 0, i32 10
	%84 = load i32* %83
	%85 = call %ast.AstNode* @ast_Extend(%ast.AstNode* %77, i32 %84, i8 1)
	store %ast.AstNode* %85, %ast.AstNode** %rhs
	%86 = load %ast.AstNode** %lhs
	%87 = getelementptr %ast.AstNode* %86, i32 0, i32 7
	%88 = load i32* %87
	%89 = load %target.ModelT** @target_Target
	%90 = getelementptr %target.ModelT* %89, i32 0, i32 2
	%91 = load i8* %90
	%92 = zext i8 %91 to i32
	%93 = icmp ugt i32 %88, %92
	br i1 %93, label %L.16, label %L.17
L.16:
	%94 = load %ast.AstNode** %lhs
	%95 = getelementptr %ast.AstNode* %94, i32 0, i32 8
	%96 = load %type.TypeNode** %95
	%97 = getelementptr %type.TypeNode* %96, i32 0, i32 16
	%98 = load i8* %97
	%99 = load %target.ModelT** @target_Target
	%100 = getelementptr %target.ModelT* %99, i32 0, i32 0
	%101 = load i8* %100
	%102 = icmp ne i8 %98, %101
	br label %L.17
L.17:
	%103 = phi i1 [ false, %L.14 ], [ %102, %L.16 ]
	br i1 %103, label %L.19, label %L.18
L.19:
	%104 = load %ast.AstNode** %rhs
	%105 = getelementptr %ast.AstNode* %104, i32 0, i32 8
	%106 = load %type.TypeNode** %105
	%107 = load %ast.AstNode** %rhs
	%108 = call %ast.AstNode* @ast_New1(i8 32, %type.TypeNode* %106, %ast.AstNode* %107)
	store %ast.AstNode* %108, %ast.AstNode** %rhs
	br label %L.18
L.18:
	%109 = load %ast.AstNode** %lhs
	%110 = bitcast %ast.AstNode* %109 to %ast.AstNode*
	%111 = load %ast.AstNode** %store
	%112 = getelementptr %ast.AstNode* %111, i32 0, i32 11
	%113 = load i16* %i
	%114 = zext i16 %113 to i32
	%115 = getelementptr [0 x %ast.AstNode*]* %112, i32 0, i32 %114
	store %ast.AstNode* %110, %ast.AstNode** %115
	%116 = load %ast.AstNode** %rhs
	%117 = bitcast %ast.AstNode* %116 to %ast.AstNode*
	%118 = load %ast.AstNode** %store
	%119 = getelementptr %ast.AstNode* %118, i32 0, i32 11
	%120 = load i16* %n
	%121 = load i16* %i
	%122 = add i16 %120, %121
	%123 = zext i16 %122 to i32
	%124 = getelementptr [0 x %ast.AstNode*]* %119, i32 0, i32 %123
	store %ast.AstNode* %117, %ast.AstNode** %124
	br label %L.10
L.10:
	%125 = load %ast.AstNode** %rhs
	%126 = call i8 @llvm_GenSub(%ast.AstNode* %125)
	%127 = load i16* %i
	%128 = add i16 %127, 1
	store i16 %128, i16* %i
	br label %L.1
L.2:
	store i16 0, i16* %i
	br label %L.20
L.20:
	%129 = load i16* %i
	%130 = load i16* %n
	%131 = icmp ult i16 %129, %130
	%132 = xor i1 %131, true
	br i1 %132, label %L.21, label %L.22
L.22:
	%133 = load %ast.AstNode** %store
	%134 = getelementptr %ast.AstNode* %133, i32 0, i32 11
	%135 = load i16* %i
	%136 = zext i16 %135 to i32
	%137 = getelementptr [0 x %ast.AstNode*]* %134, i32 0, i32 %136
	%138 = load %ast.AstNode** %137
	%139 = bitcast %ast.AstNode* %138 to %ast.AstNode*
	store %ast.AstNode* %139, %ast.AstNode** %lhs
	%140 = load %ast.AstNode** %store
	%141 = getelementptr %ast.AstNode* %140, i32 0, i32 11
	%142 = load i16* %n
	%143 = load i16* %i
	%144 = add i16 %142, %143
	%145 = zext i16 %144 to i32
	%146 = getelementptr [0 x %ast.AstNode*]* %141, i32 0, i32 %145
	%147 = load %ast.AstNode** %146
	%148 = bitcast %ast.AstNode* %147 to %ast.AstNode*
	store %ast.AstNode* %148, %ast.AstNode** %rhs
	%149 = load %ast.AstNode** %lhs
	%150 = icmp ne %ast.AstNode* %149, null
	br i1 %150, label %L.24, label %L.23
L.24:
	%151 = load %ast.AstNode** %lhs
	%152 = call i8 @llvm_GenSub(%ast.AstNode* %151)
	%153 = load %bout.BufIO** @llvm_f
	%154 = bitcast %bout.BufIO* %153 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %154, i8 9)
	%155 = load %bout.BufIO** @llvm_f
	%156 = bitcast %bout.BufIO* %155 to %bout.BufIO*
	%157 = getelementptr [7 x i8]* @S.820
	%158 = bitcast [7 x i8]* %157 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %156, [0 x i8]* %158)
	%159 = load %ast.AstNode** %lhs
	%160 = getelementptr %ast.AstNode* %159, i32 0, i32 8
	%161 = load %type.TypeNode** %160
	%162 = getelementptr %type.TypeNode* %161, i32 0, i32 0
	%163 = load %type.TypeNode** %162
	%164 = getelementptr %type.TypeNode* %163, i32 0, i32 27
	%165 = load i8* %164
	%166 = icmp ne i8 %165, 0
	br i1 %166, label %L.26, label %L.25
L.26:
	%167 = load %bout.BufIO** @llvm_f
	%168 = bitcast %bout.BufIO* %167 to %bout.BufIO*
	%169 = getelementptr [10 x i8]* @S.821
	%170 = bitcast [10 x i8]* %169 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %168, [0 x i8]* %170)
	br label %L.25
L.25:
	%171 = load %ast.AstNode** %rhs
	call void @llvm_NodeType(%ast.AstNode* %171)
	%172 = load %bout.BufIO** @llvm_f
	%173 = bitcast %bout.BufIO* %172 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %173, i8 32)
	%174 = load %ast.AstNode** %rhs
	call void @llvm_NodeSrc(%ast.AstNode* %174)
	%175 = getelementptr [8 x i8]* @S.822
	%176 = bitcast [8 x i8]* %175 to [0 x i8]*
	%177 = load %ast.AstNode** %lhs
	call void @llvm_Print([0 x i8]* %176, %ast.AstNode* %177)
	%178 = load %ast.AstNode** %lhs
	%179 = getelementptr %ast.AstNode* %178, i32 0, i32 8
	%180 = load %type.TypeNode** %179
	%181 = getelementptr %type.TypeNode* %180, i32 0, i32 0
	%182 = load %type.TypeNode** %181
	%183 = getelementptr %type.TypeNode* %182, i32 0, i32 22
	%184 = load i8* %183
	%185 = icmp ne i8 %184, 0
	br i1 %185, label %L.28, label %L.27
L.28:
	%186 = load %bout.BufIO** @llvm_f
	%187 = bitcast %bout.BufIO* %186 to %bout.BufIO*
	%188 = getelementptr [9 x i8]* @S.823
	%189 = bitcast [9 x i8]* %188 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %187, [0 x i8]* %189)
	%190 = load %bout.BufIO** @llvm_f
	%191 = bitcast %bout.BufIO* %190 to %bout.BufIO*
	%192 = load %ast.AstNode** %lhs
	%193 = getelementptr %ast.AstNode* %192, i32 0, i32 8
	%194 = load %type.TypeNode** %193
	%195 = getelementptr %type.TypeNode* %194, i32 0, i32 0
	%196 = load %type.TypeNode** %195
	%197 = getelementptr %type.TypeNode* %196, i32 0, i32 11
	%198 = load i32* %197
	%199 = zext i32 %198 to i64
	%200 = load %target.ModelT** @target_Target
	%201 = getelementptr %target.ModelT* %200, i32 0, i32 2
	%202 = load i8* %201
	%203 = zext i8 %202 to i64
	%204 = udiv i64 %199, %203
	call void @bout_BufIO_uint64(%bout.BufIO* %191, i64 %204)
	br label %L.27
L.27:
	%205 = load %ast.AstNode** %store
	call void @llvm_PEndLine(%ast.AstNode* %205)
	br label %L.23
L.23:
	%206 = load i16* %i
	%207 = add i16 %206, 1
	store i16 %207, i16* %i
	br label %L.20
L.21:
	br label %return
return:
	ret void
}
@S.824 = internal constant [19 x i8] c"\09store %T %N, %T* \00"
@S.825 = internal constant [18 x i8] c"\09br label %return\00"
define internal zeroext i8 @llvm_Return(%ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca i8
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%i = alloca i16
	%rnode = alloca %ast.AstNode*
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 2
	%2 = load i16* %1
	%3 = icmp ugt i16 %2, 0
	br i1 %3, label %L.2, label %L.1
L.2:
	store i16 0, i16* %i
	br label %L.3
L.3:
	%4 = load i16* %i
	%5 = load %ast.AstNode** %node
	%6 = getelementptr %ast.AstNode* %5, i32 0, i32 2
	%7 = load i16* %6
	%8 = icmp ult i16 %4, %7
	%9 = xor i1 %8, true
	br i1 %9, label %L.4, label %L.5
L.5:
	%10 = load %ast.AstNode** %node
	%11 = getelementptr %ast.AstNode* %10, i32 0, i32 11
	%12 = load i16* %i
	%13 = zext i16 %12 to i32
	%14 = getelementptr [0 x %ast.AstNode*]* %11, i32 0, i32 %13
	%15 = load %ast.AstNode** %14
	%16 = bitcast %ast.AstNode* %15 to %ast.AstNode*
	store %ast.AstNode* %16, %ast.AstNode** %rnode
	%17 = load %ast.AstNode** %rnode
	%18 = call i8 @llvm_GenSub(%ast.AstNode* %17)
	%19 = getelementptr [19 x i8]* @S.824
	%20 = bitcast [19 x i8]* %19 to [0 x i8]*
	%21 = load %ast.AstNode** %rnode
	call void @llvm_Print([0 x i8]* %20, %ast.AstNode* %21)
	%22 = load i16* %i
	call void @llvm_PRetValName(i16 %22)
	%23 = load %ast.AstNode** %node
	call void @llvm_PEndLine(%ast.AstNode* %23)
	%24 = load i16* %i
	%25 = add i16 %24, 1
	store i16 %25, i16* %i
	br label %L.3
L.4:
	%26 = load %ast.AstNode** %node
	%27 = getelementptr %ast.AstNode* %26, i32 0, i32 11
	%28 = getelementptr [0 x %ast.AstNode*]* %27, i32 0, i32 0
	%29 = load %ast.AstNode** %28
	%30 = getelementptr %ast.AstNode* %29, i32 0, i32 6
	%31 = load i16* %30
	%32 = load %ast.AstNode** %node
	%33 = getelementptr %ast.AstNode* %32, i32 0, i32 6
	store i16 %31, i16* %33
	br label %L.1
L.1:
	%34 = load %bout.BufIO** @llvm_f
	%35 = bitcast %bout.BufIO* %34 to %bout.BufIO*
	%36 = getelementptr [18 x i8]* @S.825
	%37 = bitcast [18 x i8]* %36 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %35, [0 x i8]* %37)
	%38 = load %ast.AstNode** %node
	call void @llvm_PEndLine(%ast.AstNode* %38)
	store i8 1, i8* %rv.0
	br label %return
return:
	%39 = load i8* %rv.0
	ret i8 %39
}
@S.826 = internal constant [38 x i8] c"\09%N = select i1 %0N, %1T %1N, %2T %2N\00"
define internal void @llvm_IfExpr(%ast.AstNode* %node$) nounwind {
L.0:
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%0 = load %ast.AstNode** %node
	%1 = getelementptr %ast.AstNode* %0, i32 0, i32 11
	%2 = getelementptr [0 x %ast.AstNode*]* %1, i32 0, i32 1
	%3 = load %ast.AstNode** %2
	%4 = bitcast %ast.AstNode* %3 to %ast.AstNode*
	%5 = call i8 @llvm_GenSub(%ast.AstNode* %4)
	%6 = load %ast.AstNode** %node
	%7 = getelementptr %ast.AstNode* %6, i32 0, i32 11
	%8 = getelementptr [0 x %ast.AstNode*]* %7, i32 0, i32 2
	%9 = load %ast.AstNode** %8
	%10 = bitcast %ast.AstNode* %9 to %ast.AstNode*
	%11 = call i8 @llvm_GenSub(%ast.AstNode* %10)
	%12 = load %ast.AstNode** %node
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 11
	%14 = getelementptr [0 x %ast.AstNode*]* %13, i32 0, i32 0
	%15 = load %ast.AstNode** %14
	%16 = bitcast %ast.AstNode* %15 to %ast.AstNode*
	%17 = call i8 @llvm_GenSub(%ast.AstNode* %16)
	%18 = load i16* @llvm_Tseqno
	%19 = load %ast.AstNode** %node
	%20 = getelementptr %ast.AstNode* %19, i32 0, i32 6
	store i16 %18, i16* %20
	%21 = load i16* @llvm_Tseqno
	%22 = add i16 %21, 1
	store i16 %22, i16* @llvm_Tseqno
	%23 = getelementptr [38 x i8]* @S.826
	%24 = bitcast [38 x i8]* %23 to [0 x i8]*
	%25 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %24, %ast.AstNode* %25)
	%26 = load %ast.AstNode** %node
	call void @llvm_PEndLine(%ast.AstNode* %26)
	br label %return
return:
	ret void
}
@S.827 = internal constant [28 x i8] c"\09%N = getelementptr %K %0N\0A\00"
@S.828 = internal constant [40 x i8] c"\09%N = getelementptr %0K %0N, %W 0, i32 \00"
@S.829 = internal constant [44 x i8] c"\09%N = getelementptr %0K %0N, %W 0, %1T %1N\0A\00"
@S.830 = internal constant [44 x i8] c"\09%N = getelementptr %0T %0N, %W 0, %1T %1N\0A\00"
@S.831 = internal constant [27 x i8] c" = bitcast %**K* %N to %T\0A\00"
@S.832 = internal constant [29 x i8] c"\09%N = bitcast %0K %0N to %K\0A\00"
@S.833 = internal constant [30 x i8] c"\09%N = inttoptr %0T %0N to %T\0A\00"
@S.834 = internal constant [30 x i8] c"\09%N = ptrtoint %0T %0N to %T\0A\00"
@S.835 = internal constant [29 x i8] c"\09%N = bitcast %0K %0N to %K\0A\00"
@S.836 = internal constant [5 x i8] c"zext\00"
@S.837 = internal constant [5 x i8] c"sext\00"
@S.838 = internal constant [6 x i8] c"trunc\00"
@S.839 = internal constant [4 x i8] c"add\00"
@S.840 = internal constant [4 x i8] c"sub\00"
@S.841 = internal constant [4 x i8] c"mul\00"
@S.842 = internal constant [5 x i8] c"udiv\00"
@S.843 = internal constant [5 x i8] c"sdiv\00"
@S.844 = internal constant [5 x i8] c"urem\00"
@S.845 = internal constant [5 x i8] c"srem\00"
@S.846 = internal constant [4 x i8] c"shl\00"
@S.847 = internal constant [5 x i8] c"lshr\00"
@S.848 = internal constant [5 x i8] c"ashr\00"
@S.849 = internal constant [5 x i8] c"fadd\00"
@S.850 = internal constant [5 x i8] c"fsub\00"
@S.851 = internal constant [5 x i8] c"fmul\00"
@S.852 = internal constant [5 x i8] c"fdiv\00"
@S.853 = internal constant [5 x i8] c"frem\00"
@S.854 = internal constant [8 x i8] c"icmp eq\00"
@S.855 = internal constant [8 x i8] c"icmp ne\00"
@S.856 = internal constant [9 x i8] c"icmp ugt\00"
@S.857 = internal constant [9 x i8] c"icmp ult\00"
@S.858 = internal constant [9 x i8] c"icmp uge\00"
@S.859 = internal constant [9 x i8] c"icmp ule\00"
@S.860 = internal constant [9 x i8] c"icmp sgt\00"
@S.861 = internal constant [9 x i8] c"icmp slt\00"
@S.862 = internal constant [9 x i8] c"icmp sge\00"
@S.863 = internal constant [9 x i8] c"icmp sle\00"
@S.864 = internal constant [4 x i8] c"and\00"
@S.865 = internal constant [3 x i8] c"or\00"
@S.866 = internal constant [4 x i8] c"xor\00"
@S.867 = internal constant [24 x i8] c"\09%N = xor i1 %0N, true\0A\00"
define internal zeroext i8 @llvm_GenSub(%ast.AstNode* %node$) nounwind {
L.0:
	%rv.0 = alloca i8
	%node = alloca %ast.AstNode*
	store %ast.AstNode* %node$, %ast.AstNode** %node
	%term = alloca i8
	store i8 0, i8* %term
	%0 = load %ast.AstNode** %node
	%1 = icmp eq %ast.AstNode* %0, null
	br i1 %1, label %L.2, label %L.1
L.2:
	%2 = load i8* %term
	store i8 %2, i8* %rv.0
	br label %return
L.1:
	%3 = load %ast.AstNode** %node
	%4 = getelementptr %ast.AstNode* %3, i32 0, i32 6
	%5 = load i16* %4
	%6 = icmp ne i16 %5, 0
	br i1 %6, label %L.4, label %L.3
L.4:
	%7 = load i8* %term
	store i8 %7, i8* %rv.0
	br label %return
L.3:
	%8 = load %ast.AstNode** %node
	%9 = getelementptr %ast.AstNode* %8, i32 0, i32 0
	%10 = load i8* %9
	%11 = zext i8 %10 to i32
	switch i32 %11, label %L.5 [
		i32 1, label %L.7
		i32 3, label %L.8
		i32 4, label %L.9
		i32 91, label %L.10
		i32 5, label %L.11
		i32 6, label %L.12
		i32 12, label %L.13
		i32 7, label %L.13
		i32 8, label %L.13
		i32 9, label %L.13
		i32 10, label %L.13
		i32 23, label %L.14
		i32 24, label %L.15
		i32 25, label %L.15
		i32 21, label %L.16
		i32 22, label %L.17
		i32 90, label %L.18
		i32 26, label %L.19
		i32 28, label %L.20
		i32 27, label %L.21
		i32 16, label %L.22
		i32 13, label %L.23
		i32 14, label %L.24
		i32 15, label %L.25
		i32 17, label %L.26
		i32 29, label %L.27
		i32 30, label %L.28
		i32 31, label %L.29
		i32 32, label %L.30
		i32 34, label %L.30
		i32 33, label %L.30
		i32 36, label %L.30
		i32 37, label %L.30
		i32 38, label %L.30
		i32 39, label %L.30
		i32 40, label %L.30
		i32 41, label %L.30
		i32 42, label %L.30
		i32 43, label %L.31
		i32 44, label %L.31
		i32 45, label %L.31
		i32 46, label %L.31
		i32 47, label %L.31
		i32 48, label %L.32
		i32 49, label %L.33
		i32 50, label %L.34
		i32 51, label %L.35
		i32 52, label %L.36
		i32 53, label %L.37
		i32 68, label %L.38
		i32 70, label %L.38
		i32 69, label %L.39
		i32 71, label %L.40
		i32 78, label %L.41
		i32 79, label %L.42
		i32 80, label %L.43
		i32 81, label %L.44
		i32 82, label %L.45
		i32 54, label %L.46
		i32 55, label %L.47
		i32 57, label %L.48
		i32 56, label %L.49
		i32 59, label %L.50
		i32 58, label %L.51
		i32 61, label %L.52
		i32 60, label %L.53
		i32 63, label %L.54
		i32 62, label %L.55
		i32 72, label %L.56
		i32 73, label %L.57
		i32 74, label %L.58
		i32 77, label %L.59
		i32 76, label %L.60
		i32 75, label %L.61
		i32 83, label %L.62
		i32 18, label %L.63
		i32 19, label %L.64
		i32 20, label %L.65
		i32 87, label %L.66
		i32 88, label %L.67
		i32 85, label %L.68
		i32 86, label %L.69
		i32 84, label %L.70
	]
L.7:
	%12 = load %ast.AstNode** %node
	%13 = getelementptr %ast.AstNode* %12, i32 0, i32 11
	%14 = getelementptr [0 x %ast.AstNode*]* %13, i32 0, i32 0
	%15 = load %ast.AstNode** %14
	%16 = bitcast %ast.AstNode* %15 to %ast.AstNode*
	%17 = call i8 @llvm_GenSub(%ast.AstNode* %16)
	%18 = load %ast.AstNode** %node
	%19 = getelementptr %ast.AstNode* %18, i32 0, i32 11
	%20 = getelementptr [0 x %ast.AstNode*]* %19, i32 0, i32 0
	%21 = load %ast.AstNode** %20
	%22 = getelementptr %ast.AstNode* %21, i32 0, i32 6
	%23 = load i16* %22
	%24 = load %ast.AstNode** %node
	%25 = getelementptr %ast.AstNode* %24, i32 0, i32 6
	store i16 %23, i16* %25
	br label %L.6
L.8:
	%26 = getelementptr %A.3* @feature, i32 0, i32 3
	%27 = load i8* %26
	%28 = icmp ne i8 %27, 0
	br i1 %28, label %L.72, label %L.71
L.72:
	%29 = load %ast.AstNode** %node
	%30 = getelementptr %ast.AstNode* %29, i32 0, i32 9
	%31 = load %symb.SymbNode** %30
	%32 = getelementptr %symb.SymbNode* %31
	call void @llvmdb_FileStart(%symb.SymbNode* %32)
	br label %L.71
L.71:
	%33 = load %ast.AstNode** %node
	%34 = getelementptr %ast.AstNode* %33, i32 0, i32 11
	%35 = getelementptr [0 x %ast.AstNode*]* %34, i32 0, i32 0
	%36 = load %ast.AstNode** %35
	%37 = bitcast %ast.AstNode* %36 to %ast.AstNode*
	%38 = call i8 @llvm_GenSub(%ast.AstNode* %37)
	%39 = getelementptr %A.3* @feature, i32 0, i32 3
	%40 = load i8* %39
	%41 = icmp ne i8 %40, 0
	br i1 %41, label %L.74, label %L.73
L.74:
	%42 = load %ast.AstNode** %node
	%43 = getelementptr %ast.AstNode* %42, i32 0, i32 9
	%44 = load %symb.SymbNode** %43
	%45 = getelementptr %symb.SymbNode* %44
	call void @llvmdb_FileFinish(%symb.SymbNode* %45)
	br label %L.73
L.73:
	br label %L.6
L.9:
	%46 = getelementptr %A.3* @feature, i32 0, i32 3
	%47 = load i8* %46
	%48 = icmp ne i8 %47, 0
	br i1 %48, label %L.76, label %L.75
L.76:
	%49 = load %ast.AstNode** %node
	%50 = getelementptr %ast.AstNode* %49, i32 0, i32 9
	%51 = load %symb.SymbNode** %50
	%52 = getelementptr %symb.SymbNode* %51, i32 0, i32 22
	%53 = getelementptr [0 x i8]* %52
	%54 = bitcast [0 x i8]* %53 to [0 x i8]*
	call void @llvmdb_PackageStart([0 x i8]* %54)
	br label %L.75
L.75:
	%55 = load %ast.AstNode** %node
	%56 = getelementptr %ast.AstNode* %55, i32 0, i32 11
	%57 = getelementptr [0 x %ast.AstNode*]* %56, i32 0, i32 0
	%58 = load %ast.AstNode** %57
	%59 = bitcast %ast.AstNode* %58 to %ast.AstNode*
	%60 = call i8 @llvm_GenSub(%ast.AstNode* %59)
	%61 = getelementptr %A.3* @feature, i32 0, i32 3
	%62 = load i8* %61
	%63 = icmp ne i8 %62, 0
	br i1 %63, label %L.78, label %L.77
L.78:
	call void @llvmdb_PackageEnd()
	br label %L.77
L.77:
	br label %L.6
L.10:
	%64 = getelementptr %A.3* @feature, i32 0, i32 3
	%65 = load i8* %64
	%66 = icmp ne i8 %65, 0
	br i1 %66, label %L.80, label %L.79
L.80:
	%67 = load %ast.AstNode** %node
	%68 = getelementptr %ast.AstNode* %67, i32 0, i32 9
	%69 = load %symb.SymbNode** %68
	%70 = getelementptr %symb.SymbNode* %69
	call void @llvmdb_ProcStart(%symb.SymbNode* %70)
	br label %L.79
L.79:
	%71 = load %ast.AstNode** %node
	call void @llvm_Procedure(%ast.AstNode* %71)
	%72 = getelementptr %A.3* @feature, i32 0, i32 3
	%73 = load i8* %72
	%74 = icmp ne i8 %73, 0
	br i1 %74, label %L.82, label %L.81
L.82:
	%75 = load %ast.AstNode** %node
	%76 = getelementptr %ast.AstNode* %75, i32 0, i32 9
	%77 = load %symb.SymbNode** %76
	%78 = getelementptr %symb.SymbNode* %77
	call void @llvmdb_ProcFinish(%symb.SymbNode* %78)
	br label %L.81
L.81:
	%79 = load %bout.BufIO** @llvm_f
	%80 = bitcast %bout.BufIO* %79 to %bout.BufIO*
	call void @bout_BufIO_flush(%bout.BufIO* %80)
	br label %L.6
L.11:
	%81 = load %ast.AstNode** %node
	call void @llvm_DclVar(%ast.AstNode* %81)
	br label %L.6
L.12:
	%82 = load %ast.AstNode** %node
	call void @llvm_DclCon(%ast.AstNode* %82)
	br label %L.6
L.13:
	br label %L.6
L.14:
	%83 = load %ast.AstNode** %node
	call void @llvm_Copy(%ast.AstNode* %83)
	br label %L.6
L.15:
	%84 = load %ast.AstNode** %node
	%85 = call i8 @llvm_ArrayCompare(%ast.AstNode* %84)
	store i8 %85, i8* %term
	br label %L.6
L.16:
	%86 = load %ast.AstNode** %node
	call void @llvm_Set(%ast.AstNode* %86)
	br label %L.6
L.17:
	%87 = load %ast.AstNode** %node
	call void @llvm_Copy(%ast.AstNode* %87)
	br label %L.6
L.18:
	%88 = load %ast.AstNode** %node
	%89 = call i8 @llvm_Return(%ast.AstNode* %88)
	store i8 %89, i8* %term
	br label %L.6
L.19:
	%90 = load %ast.AstNode** %node
	call void @llvm_GetRV(%ast.AstNode* %90)
	br label %L.6
L.20:
	%91 = load %ast.AstNode** %node
	call void @llvm_Store(%ast.AstNode* %91)
	br label %L.6
L.21:
	%92 = load %ast.AstNode** %node
	call void @llvm_Load(%ast.AstNode* %92)
	br label %L.6
L.22:
	%93 = load %ast.AstNode** %node
	%94 = getelementptr %ast.AstNode* %93, i32 0, i32 11
	%95 = getelementptr [0 x %ast.AstNode*]* %94, i32 0, i32 0
	%96 = load %ast.AstNode** %95
	%97 = bitcast %ast.AstNode* %96 to %ast.AstNode*
	%98 = call i8 @llvm_GenSub(%ast.AstNode* %97)
	%99 = load i16* @llvm_Tseqno
	%100 = load %ast.AstNode** %node
	%101 = getelementptr %ast.AstNode* %100, i32 0, i32 6
	store i16 %99, i16* %101
	%102 = load i16* @llvm_Tseqno
	%103 = add i16 %102, 1
	store i16 %103, i16* @llvm_Tseqno
	%104 = getelementptr [28 x i8]* @S.827
	%105 = bitcast [28 x i8]* %104 to [0 x i8]*
	%106 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %105, %ast.AstNode* %106)
	br label %L.6
L.23:
	%107 = load %ast.AstNode** %node
	%108 = getelementptr %ast.AstNode* %107, i32 0, i32 11
	%109 = getelementptr [0 x %ast.AstNode*]* %108, i32 0, i32 0
	%110 = load %ast.AstNode** %109
	%111 = bitcast %ast.AstNode* %110 to %ast.AstNode*
	%112 = call i8 @llvm_GenSub(%ast.AstNode* %111)
	%113 = load i16* @llvm_Tseqno
	%114 = load %ast.AstNode** %node
	%115 = getelementptr %ast.AstNode* %114, i32 0, i32 6
	store i16 %113, i16* %115
	%116 = load i16* @llvm_Tseqno
	%117 = add i16 %116, 1
	store i16 %117, i16* @llvm_Tseqno
	%118 = getelementptr [40 x i8]* @S.828
	%119 = bitcast [40 x i8]* %118 to [0 x i8]*
	%120 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %119, %ast.AstNode* %120)
	%121 = load %bout.BufIO** @llvm_f
	%122 = bitcast %bout.BufIO* %121 to %bout.BufIO*
	%123 = load %ast.AstNode** %node
	%124 = getelementptr %ast.AstNode* %123, i32 0, i32 10
	%125 = load i64* %124
	%126 = trunc i64 %125 to i32
	call void @bout_BufIO_uint32(%bout.BufIO* %122, i32 %126)
	%127 = load %bout.BufIO** @llvm_f
	%128 = bitcast %bout.BufIO* %127 to %bout.BufIO*
	call void @bout_BufIO_nl(%bout.BufIO* %128)
	br label %L.6
L.24:
	%129 = load %ast.AstNode** %node
	%130 = getelementptr %ast.AstNode* %129, i32 0, i32 11
	%131 = getelementptr [0 x %ast.AstNode*]* %130, i32 0, i32 0
	%132 = load %ast.AstNode** %131
	%133 = bitcast %ast.AstNode* %132 to %ast.AstNode*
	%134 = call i8 @llvm_GenSub(%ast.AstNode* %133)
	%135 = load %ast.AstNode** %node
	%136 = getelementptr %ast.AstNode* %135, i32 0, i32 11
	%137 = getelementptr [0 x %ast.AstNode*]* %136, i32 0, i32 1
	%138 = load %ast.AstNode** %137
	%139 = bitcast %ast.AstNode* %138 to %ast.AstNode*
	%140 = load %type.TypeNode** @type_wordtype
	%141 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %139, %type.TypeNode* %140)
	%142 = bitcast %ast.AstNode* %141 to %ast.AstNode*
	%143 = load %ast.AstNode** %node
	%144 = getelementptr %ast.AstNode* %143, i32 0, i32 11
	%145 = getelementptr [0 x %ast.AstNode*]* %144, i32 0, i32 1
	store %ast.AstNode* %142, %ast.AstNode** %145
	%146 = load %ast.AstNode** %node
	%147 = getelementptr %ast.AstNode* %146, i32 0, i32 11
	%148 = getelementptr [0 x %ast.AstNode*]* %147, i32 0, i32 1
	%149 = load %ast.AstNode** %148
	%150 = bitcast %ast.AstNode* %149 to %ast.AstNode*
	%151 = call i8 @llvm_GenSub(%ast.AstNode* %150)
	%152 = load i16* @llvm_Tseqno
	%153 = load %ast.AstNode** %node
	%154 = getelementptr %ast.AstNode* %153, i32 0, i32 6
	store i16 %152, i16* %154
	%155 = load i16* @llvm_Tseqno
	%156 = add i16 %155, 1
	store i16 %156, i16* @llvm_Tseqno
	%157 = getelementptr [44 x i8]* @S.829
	%158 = bitcast [44 x i8]* %157 to [0 x i8]*
	%159 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %158, %ast.AstNode* %159)
	br label %L.6
L.25:
	%nextseqno = alloca i16
	%160 = load %ast.AstNode** %node
	%161 = getelementptr %ast.AstNode* %160, i32 0, i32 11
	%162 = getelementptr [0 x %ast.AstNode*]* %161, i32 0, i32 0
	%163 = load %ast.AstNode** %162
	%164 = bitcast %ast.AstNode* %163 to %ast.AstNode*
	%165 = call i8 @llvm_GenSub(%ast.AstNode* %164)
	%166 = load %ast.AstNode** %node
	%167 = getelementptr %ast.AstNode* %166, i32 0, i32 11
	%168 = getelementptr [0 x %ast.AstNode*]* %167, i32 0, i32 1
	%169 = load %ast.AstNode** %168
	%170 = bitcast %ast.AstNode* %169 to %ast.AstNode*
	%171 = load %type.TypeNode** @type_wordtype
	%172 = call %ast.AstNode* @ast_ExtendT(%ast.AstNode* %170, %type.TypeNode* %171)
	%173 = bitcast %ast.AstNode* %172 to %ast.AstNode*
	%174 = load %ast.AstNode** %node
	%175 = getelementptr %ast.AstNode* %174, i32 0, i32 11
	%176 = getelementptr [0 x %ast.AstNode*]* %175, i32 0, i32 1
	store %ast.AstNode* %173, %ast.AstNode** %176
	%177 = load %ast.AstNode** %node
	%178 = getelementptr %ast.AstNode* %177, i32 0, i32 11
	%179 = getelementptr [0 x %ast.AstNode*]* %178, i32 0, i32 1
	%180 = load %ast.AstNode** %179
	%181 = bitcast %ast.AstNode* %180 to %ast.AstNode*
	%182 = call i8 @llvm_GenSub(%ast.AstNode* %181)
	%183 = load i16* @llvm_Tseqno
	%184 = load %ast.AstNode** %node
	%185 = getelementptr %ast.AstNode* %184, i32 0, i32 6
	store i16 %183, i16* %185
	%186 = load i16* @llvm_Tseqno
	%187 = add i16 %186, 1
	store i16 %187, i16* @llvm_Tseqno
	%188 = load i16* @llvm_Tseqno
	store i16 %188, i16* %nextseqno
	%189 = load i16* @llvm_Tseqno
	%190 = add i16 %189, 1
	store i16 %190, i16* @llvm_Tseqno
	%191 = getelementptr [44 x i8]* @S.830
	%192 = bitcast [44 x i8]* %191 to [0 x i8]*
	%193 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %192, %ast.AstNode* %193)
	%194 = load %bout.BufIO** @llvm_f
	%195 = bitcast %bout.BufIO* %194 to %bout.BufIO*
	call void @bout_BufIO_chr(%bout.BufIO* %195, i8 9)
	%196 = load i16* %nextseqno
	call void @llvm_PTempName(i16 %196)
	%197 = getelementptr [27 x i8]* @S.831
	%198 = bitcast [27 x i8]* %197 to [0 x i8]*
	%199 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %198, %ast.AstNode* %199)
	%200 = load i16* %nextseqno
	%201 = load %ast.AstNode** %node
	%202 = getelementptr %ast.AstNode* %201, i32 0, i32 6
	store i16 %200, i16* %202
	br label %L.6
L.26:
	%203 = load %ast.AstNode** %node
	%204 = getelementptr %ast.AstNode* %203, i32 0, i32 11
	%205 = getelementptr [0 x %ast.AstNode*]* %204, i32 0, i32 0
	%206 = load %ast.AstNode** %205
	%207 = bitcast %ast.AstNode* %206 to %ast.AstNode*
	%208 = call i8 @llvm_GenSub(%ast.AstNode* %207)
	%209 = load i16* @llvm_Tseqno
	%210 = load %ast.AstNode** %node
	%211 = getelementptr %ast.AstNode* %210, i32 0, i32 6
	store i16 %209, i16* %211
	%212 = load i16* @llvm_Tseqno
	%213 = add i16 %212, 1
	store i16 %213, i16* @llvm_Tseqno
	%214 = load %ast.AstNode** %node
	%215 = getelementptr %ast.AstNode* %214, i32 0, i32 8
	%216 = load %type.TypeNode** %215
	%217 = getelementptr %type.TypeNode* %216, i32 0, i32 14
	%218 = load i8* %217
	%219 = icmp eq i8 %218, 5
	br i1 %219, label %L.84, label %L.85
L.84:
	%220 = load %ast.AstNode** %node
	%221 = getelementptr %ast.AstNode* %220, i32 0, i32 11
	%222 = getelementptr [0 x %ast.AstNode*]* %221, i32 0, i32 0
	%223 = load %ast.AstNode** %222
	%224 = getelementptr %ast.AstNode* %223, i32 0, i32 8
	%225 = load %type.TypeNode** %224
	%226 = getelementptr %type.TypeNode* %225, i32 0, i32 14
	%227 = load i8* %226
	%228 = icmp eq i8 %227, 5
	br i1 %228, label %L.87, label %L.88
L.87:
	%229 = getelementptr [29 x i8]* @S.832
	%230 = bitcast [29 x i8]* %229 to [0 x i8]*
	%231 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %230, %ast.AstNode* %231)
	br label %L.86
L.88:
	%232 = getelementptr [30 x i8]* @S.833
	%233 = bitcast [30 x i8]* %232 to [0 x i8]*
	%234 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %233, %ast.AstNode* %234)
	br label %L.86
L.86:
	br label %L.83
L.85:
	%235 = load %ast.AstNode** %node
	%236 = getelementptr %ast.AstNode* %235, i32 0, i32 11
	%237 = getelementptr [0 x %ast.AstNode*]* %236, i32 0, i32 0
	%238 = load %ast.AstNode** %237
	%239 = getelementptr %ast.AstNode* %238, i32 0, i32 8
	%240 = load %type.TypeNode** %239
	%241 = getelementptr %type.TypeNode* %240, i32 0, i32 14
	%242 = load i8* %241
	%243 = icmp eq i8 %242, 5
	br i1 %243, label %L.90, label %L.91
L.90:
	%244 = getelementptr [30 x i8]* @S.834
	%245 = bitcast [30 x i8]* %244 to [0 x i8]*
	%246 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %245, %ast.AstNode* %246)
	br label %L.89
L.91:
	%247 = getelementptr [29 x i8]* @S.835
	%248 = bitcast [29 x i8]* %247 to [0 x i8]*
	%249 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %248, %ast.AstNode* %249)
	br label %L.89
L.89:
	br label %L.83
L.83:
	br label %L.6
L.27:
	%250 = load %ast.AstNode** %node
	%251 = getelementptr [5 x i8]* @S.836
	%252 = bitcast [5 x i8]* %251 to [0 x i8]*
	call void @llvm_ChangeSize(%ast.AstNode* %250, [0 x i8]* %252)
	br label %L.6
L.28:
	%253 = load %ast.AstNode** %node
	%254 = getelementptr [5 x i8]* @S.837
	%255 = bitcast [5 x i8]* %254 to [0 x i8]*
	call void @llvm_ChangeSize(%ast.AstNode* %253, [0 x i8]* %255)
	br label %L.6
L.29:
	%256 = load %ast.AstNode** %node
	%257 = getelementptr [6 x i8]* @S.838
	%258 = bitcast [6 x i8]* %257 to [0 x i8]*
	call void @llvm_ChangeSize(%ast.AstNode* %256, [0 x i8]* %258)
	br label %L.6
L.30:
	%259 = load %ast.AstNode** %node
	%260 = call i8 @llvm_UnaryOp(%ast.AstNode* %259)
	br label %L.6
L.31:
	%261 = load %ast.AstNode** %node
	%262 = call i8 @llvm_UnaryOp(%ast.AstNode* %261)
	br label %L.6
L.32:
	%263 = load %ast.AstNode** %node
	call void @llvm_ZLen(%ast.AstNode* %263)
	br label %L.6
L.33:
	%264 = load %ast.AstNode** %node
	%265 = getelementptr [4 x i8]* @S.839
	%266 = bitcast [4 x i8]* %265 to [0 x i8]*
	%267 = call i8 @llvm_BinaryOp(%ast.AstNode* %264, [0 x i8]* %266)
	br label %L.6
L.34:
	%268 = load %ast.AstNode** %node
	%269 = getelementptr [4 x i8]* @S.840
	%270 = bitcast [4 x i8]* %269 to [0 x i8]*
	%271 = call i8 @llvm_BinaryOp(%ast.AstNode* %268, [0 x i8]* %270)
	br label %L.6
L.35:
	%272 = load %ast.AstNode** %node
	%273 = getelementptr [4 x i8]* @S.841
	%274 = bitcast [4 x i8]* %273 to [0 x i8]*
	%275 = call i8 @llvm_BinaryOp(%ast.AstNode* %272, [0 x i8]* %274)
	br label %L.6
L.36:
	%276 = load %ast.AstNode** %node
	%277 = getelementptr [5 x i8]* @S.842
	%278 = bitcast [5 x i8]* %277 to [0 x i8]*
	%279 = getelementptr [5 x i8]* @S.843
	%280 = bitcast [5 x i8]* %279 to [0 x i8]*
	%281 = call i8 @llvm_SignedBinaryOp(%ast.AstNode* %276, [0 x i8]* %278, [0 x i8]* %280)
	br label %L.6
L.37:
	%282 = load %ast.AstNode** %node
	%283 = getelementptr [5 x i8]* @S.844
	%284 = bitcast [5 x i8]* %283 to [0 x i8]*
	%285 = getelementptr [5 x i8]* @S.845
	%286 = bitcast [5 x i8]* %285 to [0 x i8]*
	%287 = call i8 @llvm_SignedBinaryOp(%ast.AstNode* %282, [0 x i8]* %284, [0 x i8]* %286)
	br label %L.6
L.38:
	%288 = load %ast.AstNode** %node
	%289 = getelementptr [4 x i8]* @S.846
	%290 = bitcast [4 x i8]* %289 to [0 x i8]*
	%291 = call i8 @llvm_BinaryOp(%ast.AstNode* %288, [0 x i8]* %290)
	br label %L.6
L.39:
	%292 = load %ast.AstNode** %node
	%293 = getelementptr [5 x i8]* @S.847
	%294 = bitcast [5 x i8]* %293 to [0 x i8]*
	%295 = call i8 @llvm_BinaryOp(%ast.AstNode* %292, [0 x i8]* %294)
	br label %L.6
L.40:
	%296 = load %ast.AstNode** %node
	%297 = getelementptr [5 x i8]* @S.848
	%298 = bitcast [5 x i8]* %297 to [0 x i8]*
	%299 = call i8 @llvm_BinaryOp(%ast.AstNode* %296, [0 x i8]* %298)
	br label %L.6
L.41:
	%300 = load %ast.AstNode** %node
	%301 = getelementptr [5 x i8]* @S.849
	%302 = bitcast [5 x i8]* %301 to [0 x i8]*
	%303 = call i8 @llvm_BinaryOp(%ast.AstNode* %300, [0 x i8]* %302)
	br label %L.6
L.42:
	%304 = load %ast.AstNode** %node
	%305 = getelementptr [5 x i8]* @S.850
	%306 = bitcast [5 x i8]* %305 to [0 x i8]*
	%307 = call i8 @llvm_BinaryOp(%ast.AstNode* %304, [0 x i8]* %306)
	br label %L.6
L.43:
	%308 = load %ast.AstNode** %node
	%309 = getelementptr [5 x i8]* @S.851
	%310 = bitcast [5 x i8]* %309 to [0 x i8]*
	%311 = call i8 @llvm_BinaryOp(%ast.AstNode* %308, [0 x i8]* %310)
	br label %L.6
L.44:
	%312 = load %ast.AstNode** %node
	%313 = getelementptr [5 x i8]* @S.852
	%314 = bitcast [5 x i8]* %313 to [0 x i8]*
	%315 = call i8 @llvm_BinaryOp(%ast.AstNode* %312, [0 x i8]* %314)
	br label %L.6
L.45:
	%316 = load %ast.AstNode** %node
	%317 = getelementptr [5 x i8]* @S.853
	%318 = bitcast [5 x i8]* %317 to [0 x i8]*
	%319 = call i8 @llvm_BinaryOp(%ast.AstNode* %316, [0 x i8]* %318)
	br label %L.6
L.46:
	%320 = load %ast.AstNode** %node
	%321 = getelementptr [8 x i8]* @S.854
	%322 = bitcast [8 x i8]* %321 to [0 x i8]*
	%323 = call i8 @llvm_CompareOp(%ast.AstNode* %320, [0 x i8]* %322)
	store i8 %323, i8* %term
	br label %L.6
L.47:
	%324 = load %ast.AstNode** %node
	%325 = getelementptr [8 x i8]* @S.855
	%326 = bitcast [8 x i8]* %325 to [0 x i8]*
	%327 = call i8 @llvm_CompareOp(%ast.AstNode* %324, [0 x i8]* %326)
	store i8 %327, i8* %term
	br label %L.6
L.48:
	%328 = load %ast.AstNode** %node
	%329 = getelementptr [9 x i8]* @S.856
	%330 = bitcast [9 x i8]* %329 to [0 x i8]*
	%331 = call i8 @llvm_CompareOp(%ast.AstNode* %328, [0 x i8]* %330)
	store i8 %331, i8* %term
	br label %L.6
L.49:
	%332 = load %ast.AstNode** %node
	%333 = getelementptr [9 x i8]* @S.857
	%334 = bitcast [9 x i8]* %333 to [0 x i8]*
	%335 = call i8 @llvm_CompareOp(%ast.AstNode* %332, [0 x i8]* %334)
	store i8 %335, i8* %term
	br label %L.6
L.50:
	%336 = load %ast.AstNode** %node
	%337 = getelementptr [9 x i8]* @S.858
	%338 = bitcast [9 x i8]* %337 to [0 x i8]*
	%339 = call i8 @llvm_CompareOp(%ast.AstNode* %336, [0 x i8]* %338)
	store i8 %339, i8* %term
	br label %L.6
L.51:
	%340 = load %ast.AstNode** %node
	%341 = getelementptr [9 x i8]* @S.859
	%342 = bitcast [9 x i8]* %341 to [0 x i8]*
	%343 = call i8 @llvm_CompareOp(%ast.AstNode* %340, [0 x i8]* %342)
	store i8 %343, i8* %term
	br label %L.6
L.52:
	%344 = load %ast.AstNode** %node
	%345 = getelementptr [9 x i8]* @S.860
	%346 = bitcast [9 x i8]* %345 to [0 x i8]*
	%347 = call i8 @llvm_CompareOp(%ast.AstNode* %344, [0 x i8]* %346)
	store i8 %347, i8* %term
	br label %L.6
L.53:
	%348 = load %ast.AstNode** %node
	%349 = getelementptr [9 x i8]* @S.861
	%350 = bitcast [9 x i8]* %349 to [0 x i8]*
	%351 = call i8 @llvm_CompareOp(%ast.AstNode* %348, [0 x i8]* %350)
	store i8 %351, i8* %term
	br label %L.6
L.54:
	%352 = load %ast.AstNode** %node
	%353 = getelementptr [9 x i8]* @S.862
	%354 = bitcast [9 x i8]* %353 to [0 x i8]*
	%355 = call i8 @llvm_CompareOp(%ast.AstNode* %352, [0 x i8]* %354)
	store i8 %355, i8* %term
	br label %L.6
L.55:
	%356 = load %ast.AstNode** %node
	%357 = getelementptr [9 x i8]* @S.863
	%358 = bitcast [9 x i8]* %357 to [0 x i8]*
	%359 = call i8 @llvm_CompareOp(%ast.AstNode* %356, [0 x i8]* %358)
	store i8 %359, i8* %term
	br label %L.6
L.56:
	%360 = load %ast.AstNode** %node
	%361 = getelementptr [4 x i8]* @S.864
	%362 = bitcast [4 x i8]* %361 to [0 x i8]*
	%363 = call i8 @llvm_BinaryOp(%ast.AstNode* %360, [0 x i8]* %362)
	br label %L.6
L.57:
	%364 = load %ast.AstNode** %node
	%365 = getelementptr [3 x i8]* @S.865
	%366 = bitcast [3 x i8]* %365 to [0 x i8]*
	%367 = call i8 @llvm_BinaryOp(%ast.AstNode* %364, [0 x i8]* %366)
	br label %L.6
L.58:
	%368 = load %ast.AstNode** %node
	%369 = getelementptr [4 x i8]* @S.866
	%370 = bitcast [4 x i8]* %369 to [0 x i8]*
	%371 = call i8 @llvm_BinaryOp(%ast.AstNode* %368, [0 x i8]* %370)
	br label %L.6
L.59:
	%372 = load %ast.AstNode** %node
	%373 = getelementptr %ast.AstNode* %372, i32 0, i32 11
	%374 = getelementptr [0 x %ast.AstNode*]* %373, i32 0, i32 0
	%375 = load %ast.AstNode** %374
	%376 = bitcast %ast.AstNode* %375 to %ast.AstNode*
	%377 = call i8 @llvm_GenSub(%ast.AstNode* %376)
	%378 = load i16* @llvm_Tseqno
	%379 = load %ast.AstNode** %node
	%380 = getelementptr %ast.AstNode* %379, i32 0, i32 6
	store i16 %378, i16* %380
	%381 = load i16* @llvm_Tseqno
	%382 = add i16 %381, 1
	store i16 %382, i16* @llvm_Tseqno
	%383 = getelementptr [24 x i8]* @S.867
	%384 = bitcast [24 x i8]* %383 to [0 x i8]*
	%385 = load %ast.AstNode** %node
	call void @llvm_Print([0 x i8]* %384, %ast.AstNode* %385)
	br label %L.6
L.60:
	%386 = load %ast.AstNode** %node
	%387 = call i8 @llvm_Conditional(%ast.AstNode* %386, i8 0)
	store i8 %387, i8* %term
	br label %L.6
L.61:
	%388 = load %ast.AstNode** %node
	%389 = call i8 @llvm_Conditional(%ast.AstNode* %388, i8 1)
	store i8 %389, i8* %term
	br label %L.6
L.62:
	%390 = load %ast.AstNode** %node
	call void @llvm_IfExpr(%ast.AstNode* %390)
	br label %L.6
L.63:
	%391 = load %ast.AstNode** %node
	call void @llvm_Call(%ast.AstNode* %391, i8 0)
	br label %L.6
L.64:
	%392 = load %ast.AstNode** %node
	call void @llvm_Call(%ast.AstNode* %392, i8 1)
	br label %L.6
L.65:
	%393 = load %ast.AstNode** %node
	call void @llvm_Asm(%ast.AstNode* %393)
	br label %L.6
L.66:
	%394 = load %ast.AstNode** %node
	%395 = call i8 @llvm_If(%ast.AstNode* %394)
	store i8 %395, i8* %term
	br label %L.6
L.67:
	%396 = load %ast.AstNode** %node
	%397 = call i8 @llvm_Select(%ast.AstNode* %396)
	store i8 %397, i8* %term
	br label %L.6
L.68:
	%398 = load %ast.AstNode** %node
	%399 = call i8 @llvm_Loop(%ast.AstNode* %398)
	store i8 %399, i8* %term
	br label %L.6
L.69:
	%400 = load %ast.AstNode** %node
	%401 = call i8 @llvm_Exit(%ast.AstNode* %400)
	store i8 %401, i8* %term
	br label %L.6
L.70:
	%i = alloca i16
	store i16 0, i16* %i
	br label %L.92
L.92:
	%402 = load i16* %i
	%403 = load %ast.AstNode** %node
	%404 = getelementptr %ast.AstNode* %403, i32 0, i32 2
	%405 = load i16* %404
	%406 = icmp ult i16 %402, %405
	%407 = xor i1 %406, true
	br i1 %407, label %L.93, label %L.94
L.94:
	%408 = load i8* %term
	%409 = icmp ne i8 %408, 0
	br i1 %409, label %L.96, label %L.95
L.96:
	%410 = load i16* @llvm_Lseqno
	call void @llvm_Label(i16 %410)
	%411 = load i16* @llvm_Lseqno
	%412 = add i16 %411, 1
	store i16 %412, i16* @llvm_Lseqno
	store i8 0, i8* %term
	br label %L.95
L.95:
	%413 = load %ast.AstNode** %node
	%414 = getelementptr %ast.AstNode* %413, i32 0, i32 11
	%415 = load i16* %i
	%416 = zext i16 %415 to i32
	%417 = getelementptr [0 x %ast.AstNode*]* %414, i32 0, i32 %416
	%418 = load %ast.AstNode** %417
	%419 = bitcast %ast.AstNode* %418 to %ast.AstNode*
	%420 = call i8 @llvm_GenSub(%ast.AstNode* %419)
	store i8 %420, i8* %term
	%421 = load i16* %i
	%422 = add i16 %421, 1
	store i16 %422, i16* %i
	br label %L.92
L.93:
	br label %L.6
L.5:
	br label %L.6
L.6:
	%423 = load i8* %term
	store i8 %423, i8* %rv.0
	br label %return
return:
	%424 = load i8* %rv.0
	ret i8 %424
}
@S.868 = internal constant [22 x i8] c"target datalayout = \22\00"
@S.869 = internal constant [2 x i8] c"E\00"
@S.870 = internal constant [2 x i8] c"e\00"
@S.871 = internal constant [4 x i8] c"-p:\00"
@S.872 = internal constant [2 x i8] c":\00"
@S.873 = internal constant [2 x i8] c":\00"
@S.874 = internal constant [5 x i8] c"-i1:\00"
@S.875 = internal constant [2 x i8] c":\00"
@S.876 = internal constant [3 x i8] c"-i\00"
@S.877 = internal constant [2 x i8] c":\00"
@S.878 = internal constant [2 x i8] c":\00"
@S.879 = internal constant [20 x i8] c"\22\0Atarget triple = \22\00"
@S.880 = internal constant [3 x i8] c"\22\0A\00"
define internal void @llvm_Gen(i32 %fd$, %ast.AstNode* %tree$) nounwind {
L.0:
	%fd = alloca i32
	%tree = alloca %ast.AstNode*
	store i32 %fd$, i32* %fd
	store %ast.AstNode* %tree$, %ast.AstNode** %tree
	%i = alloca i8
	%0 = load i32* %fd
	%1 = call %bout.BufIO* @bout_buffer(i32 %0, i32 4096)
	%2 = bitcast %bout.BufIO* %1 to %bout.BufIO*
	store %bout.BufIO* %2, %bout.BufIO** @llvm_f
	%3 = load %type.TypeNode** @type_bytetype
	%4 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %3)
	store %type.TypeNode* %4, %type.TypeNode** @llvm_pbytetype
	store i8 0, i8* %i
	br label %L.1
L.1:
	%5 = load i8* %i
	%6 = load %target.ModelT** @target_Target
	%7 = getelementptr %target.ModelT* %6, i32 0, i32 5
	%8 = load i8* %7
	%9 = icmp ult i8 %5, %8
	%10 = xor i1 %9, true
	br i1 %10, label %L.2, label %L.3
L.3:
	%11 = load i8* %i
	%12 = zext i8 %11 to i32
	%13 = getelementptr [6 x %type.TypeNode*]* @type_uinttypes, i32 0, i32 %12
	%14 = load %type.TypeNode** %13
	%15 = call %type.TypeNode* @type_MakeRef(%type.TypeNode* %14)
	%16 = load i8* %i
	%17 = zext i8 %16 to i32
	%18 = getelementptr [6 x %type.TypeNode*]* @llvm_puinttype, i32 0, i32 %17
	store %type.TypeNode* %15, %type.TypeNode** %18
	%19 = load i8* %i
	%20 = add i8 %19, 1
	store i8 %20, i8* %i
	br label %L.1
L.2:
	%21 = load %bout.BufIO** @llvm_f
	%22 = bitcast %bout.BufIO* %21 to %bout.BufIO*
	%23 = getelementptr [22 x i8]* @S.868
	%24 = bitcast [22 x i8]* %23 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %22, [0 x i8]* %24)
	%25 = load %target.ModelT** @target_Target
	%26 = getelementptr %target.ModelT* %25, i32 0, i32 0
	%27 = load i8* %26
	%28 = icmp eq i8 %27, 1
	br i1 %28, label %L.5, label %L.6
L.5:
	%29 = load %bout.BufIO** @llvm_f
	%30 = bitcast %bout.BufIO* %29 to %bout.BufIO*
	%31 = getelementptr [2 x i8]* @S.869
	%32 = bitcast [2 x i8]* %31 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %30, [0 x i8]* %32)
	br label %L.4
L.6:
	%33 = load %bout.BufIO** @llvm_f
	%34 = bitcast %bout.BufIO* %33 to %bout.BufIO*
	%35 = getelementptr [2 x i8]* @S.870
	%36 = bitcast [2 x i8]* %35 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %34, [0 x i8]* %36)
	br label %L.4
L.4:
	%37 = load %bout.BufIO** @llvm_f
	%38 = bitcast %bout.BufIO* %37 to %bout.BufIO*
	%39 = getelementptr [4 x i8]* @S.871
	%40 = bitcast [4 x i8]* %39 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %38, [0 x i8]* %40)
	%41 = load %bout.BufIO** @llvm_f
	%42 = bitcast %bout.BufIO* %41 to %bout.BufIO*
	%43 = load %target.ModelT** @target_Target
	%44 = getelementptr %target.ModelT* %43, i32 0, i32 6
	%45 = getelementptr %target.SizeAlign* %44, i32 0, i32 0
	%46 = load i8* %45
	%47 = zext i8 %46 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %42, i32 %47)
	%48 = load %bout.BufIO** @llvm_f
	%49 = bitcast %bout.BufIO* %48 to %bout.BufIO*
	%50 = getelementptr [2 x i8]* @S.872
	%51 = bitcast [2 x i8]* %50 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %49, [0 x i8]* %51)
	%52 = load %bout.BufIO** @llvm_f
	%53 = bitcast %bout.BufIO* %52 to %bout.BufIO*
	%54 = load %target.ModelT** @target_Target
	%55 = getelementptr %target.ModelT* %54, i32 0, i32 6
	%56 = getelementptr %target.SizeAlign* %55, i32 0, i32 1
	%57 = load i8* %56
	%58 = zext i8 %57 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %53, i32 %58)
	%59 = load %bout.BufIO** @llvm_f
	%60 = bitcast %bout.BufIO* %59 to %bout.BufIO*
	%61 = getelementptr [2 x i8]* @S.873
	%62 = bitcast [2 x i8]* %61 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %60, [0 x i8]* %62)
	%63 = load %bout.BufIO** @llvm_f
	%64 = bitcast %bout.BufIO* %63 to %bout.BufIO*
	%65 = load %target.ModelT** @target_Target
	%66 = getelementptr %target.ModelT* %65, i32 0, i32 6
	%67 = getelementptr %target.SizeAlign* %66, i32 0, i32 1
	%68 = load i8* %67
	%69 = zext i8 %68 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %64, i32 %69)
	%70 = load %bout.BufIO** @llvm_f
	%71 = bitcast %bout.BufIO* %70 to %bout.BufIO*
	%72 = getelementptr [5 x i8]* @S.874
	%73 = bitcast [5 x i8]* %72 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %71, [0 x i8]* %73)
	%74 = load %bout.BufIO** @llvm_f
	%75 = bitcast %bout.BufIO* %74 to %bout.BufIO*
	%76 = load %target.ModelT** @target_Target
	%77 = getelementptr %target.ModelT* %76, i32 0, i32 7
	%78 = getelementptr [6 x %target.SizeAlign]* %77, i32 0, i32 0
	%79 = getelementptr %target.SizeAlign* %78, i32 0, i32 1
	%80 = load i8* %79
	%81 = zext i8 %80 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %75, i32 %81)
	%82 = load %bout.BufIO** @llvm_f
	%83 = bitcast %bout.BufIO* %82 to %bout.BufIO*
	%84 = getelementptr [2 x i8]* @S.875
	%85 = bitcast [2 x i8]* %84 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %83, [0 x i8]* %85)
	%86 = load %bout.BufIO** @llvm_f
	%87 = bitcast %bout.BufIO* %86 to %bout.BufIO*
	%88 = load %target.ModelT** @target_Target
	%89 = getelementptr %target.ModelT* %88, i32 0, i32 7
	%90 = getelementptr [6 x %target.SizeAlign]* %89, i32 0, i32 0
	%91 = getelementptr %target.SizeAlign* %90, i32 0, i32 1
	%92 = load i8* %91
	%93 = zext i8 %92 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %87, i32 %93)
	store i8 0, i8* %i
	br label %L.7
L.7:
	%94 = load i8* %i
	%95 = load %target.ModelT** @target_Target
	%96 = getelementptr %target.ModelT* %95, i32 0, i32 5
	%97 = load i8* %96
	%98 = icmp ult i8 %94, %97
	%99 = xor i1 %98, true
	br i1 %99, label %L.8, label %L.9
L.9:
	%100 = load %bout.BufIO** @llvm_f
	%101 = bitcast %bout.BufIO* %100 to %bout.BufIO*
	%102 = getelementptr [3 x i8]* @S.876
	%103 = bitcast [3 x i8]* %102 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %101, [0 x i8]* %103)
	%104 = load %bout.BufIO** @llvm_f
	%105 = bitcast %bout.BufIO* %104 to %bout.BufIO*
	%106 = load %target.ModelT** @target_Target
	%107 = getelementptr %target.ModelT* %106, i32 0, i32 7
	%108 = load i8* %i
	%109 = zext i8 %108 to i32
	%110 = getelementptr [6 x %target.SizeAlign]* %107, i32 0, i32 %109
	%111 = getelementptr %target.SizeAlign* %110, i32 0, i32 0
	%112 = load i8* %111
	%113 = zext i8 %112 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %105, i32 %113)
	%114 = load %bout.BufIO** @llvm_f
	%115 = bitcast %bout.BufIO* %114 to %bout.BufIO*
	%116 = getelementptr [2 x i8]* @S.877
	%117 = bitcast [2 x i8]* %116 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %115, [0 x i8]* %117)
	%118 = load %bout.BufIO** @llvm_f
	%119 = bitcast %bout.BufIO* %118 to %bout.BufIO*
	%120 = load %target.ModelT** @target_Target
	%121 = getelementptr %target.ModelT* %120, i32 0, i32 7
	%122 = load i8* %i
	%123 = zext i8 %122 to i32
	%124 = getelementptr [6 x %target.SizeAlign]* %121, i32 0, i32 %123
	%125 = getelementptr %target.SizeAlign* %124, i32 0, i32 1
	%126 = load i8* %125
	%127 = zext i8 %126 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %119, i32 %127)
	%128 = load %bout.BufIO** @llvm_f
	%129 = bitcast %bout.BufIO* %128 to %bout.BufIO*
	%130 = getelementptr [2 x i8]* @S.878
	%131 = bitcast [2 x i8]* %130 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %129, [0 x i8]* %131)
	%132 = load %bout.BufIO** @llvm_f
	%133 = bitcast %bout.BufIO* %132 to %bout.BufIO*
	%134 = load %target.ModelT** @target_Target
	%135 = getelementptr %target.ModelT* %134, i32 0, i32 7
	%136 = load i8* %i
	%137 = zext i8 %136 to i32
	%138 = getelementptr [6 x %target.SizeAlign]* %135, i32 0, i32 %137
	%139 = getelementptr %target.SizeAlign* %138, i32 0, i32 1
	%140 = load i8* %139
	%141 = zext i8 %140 to i32
	call void @bout_BufIO_uint(%bout.BufIO* %133, i32 %141)
	%142 = load i8* %i
	%143 = add i8 %142, 1
	store i8 %143, i8* %i
	br label %L.7
L.8:
	%144 = load %bout.BufIO** @llvm_f
	%145 = bitcast %bout.BufIO* %144 to %bout.BufIO*
	%146 = getelementptr [20 x i8]* @S.879
	%147 = bitcast [20 x i8]* %146 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %145, [0 x i8]* %147)
	%148 = load %bout.BufIO** @llvm_f
	%149 = bitcast %bout.BufIO* %148 to %bout.BufIO*
	%150 = load [0 x i8]** @target_Triple
	%151 = bitcast [0 x i8]* %150 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %149, [0 x i8]* %151)
	%152 = load %bout.BufIO** @llvm_f
	%153 = bitcast %bout.BufIO* %152 to %bout.BufIO*
	%154 = getelementptr [3 x i8]* @S.880
	%155 = bitcast [3 x i8]* %154 to [0 x i8]*
	call void @bout_BufIO_str(%bout.BufIO* %153, [0 x i8]* %155)
	%156 = getelementptr %A.3* @feature, i32 0, i32 3
	%157 = load i8* %156
	%158 = icmp ne i8 %157, 0
	br i1 %158, label %L.11, label %L.10
L.11:
	%159 = load %ast.AstNode** %tree
	%160 = getelementptr %ast.AstNode* %159, i32 0, i32 9
	%161 = load %symb.SymbNode** %160
	%162 = getelementptr %symb.SymbNode* %161
	call void @llvmdb_ProgStart(%symb.SymbNode* %162, i8 0)
	br label %L.10
L.10:
	%163 = load %ast.AstNode** %tree
	%164 = call i8 @llvm_GenSub(%ast.AstNode* %163)
	call void @llvm_DeclareIntrinsics()
	%165 = getelementptr %A.3* @feature, i32 0, i32 3
	%166 = load i8* %165
	%167 = icmp ne i8 %166, 0
	br i1 %167, label %L.13, label %L.12
L.13:
	call void @llvmdb_ProgFinish()
	br label %L.12
L.12:
	%168 = load %bout.BufIO** @llvm_f
	%169 = bitcast %bout.BufIO* %168 to %bout.BufIO*
	call void @bout_BufIO_flush(%bout.BufIO* %169)
	br label %return
return:
	ret void
}
@S.881 = internal constant [5 x i8] c".esl\00"
@S.882 = internal constant [5 x i8] c".o: \00"
@S.883 = internal constant [21 x i8] c"Unsupported target: \00"
@S.884 = internal constant [28 x i8] c"Unable to open input file: \00"
@S.885 = internal constant [31 x i8] c"Unable to create output file: \00"
define i32 @main(i32 %argc$, [0 x [0 x i8]*]* %argv$) nounwind {
L.0:
	%rv.0 = alloca i32
	%argc = alloca i32
	%argv = alloca [0 x [0 x i8]*]*
	store i32 %argc$, i32* %argc
	store [0 x [0 x i8]*]* %argv$, [0 x [0 x i8]*]** %argv
	%tree = alloca %ast.AstNode*
	%i = alloca i32
	%outfd = alloca i32
	%outfile = alloca [0 x i8]*
	%targetarch = alloca [0 x i8]*
	store [0 x i8]* null, [0 x i8]** %outfile
	store [0 x i8]* null, [0 x i8]** %targetarch
	store i32 1, i32* %outfd
	store i32 1, i32* %i
	br label %L.1
L.1:
	%0 = load i32* %i
	%1 = load i32* %argc
	%2 = icmp ult i32 %0, %1
	br i1 %2, label %L.4, label %L.5
L.4:
	%3 = load [0 x [0 x i8]*]** %argv
	%4 = load i32* %i
	%5 = getelementptr [0 x [0 x i8]*]* %3, i32 0, i32 %4
	%6 = load [0 x i8]** %5
	%7 = getelementptr [0 x i8]* %6, i32 0, i32 0
	%8 = load i8* %7
	%9 = icmp eq i8 %8, 45
	br label %L.5
L.5:
	%10 = phi i1 [ false, %L.1 ], [ %9, %L.4 ]
	%11 = xor i1 %10, true
	br i1 %11, label %L.2, label %L.3
L.3:
	%12 = load [0 x [0 x i8]*]** %argv
	%13 = load i32* %i
	%14 = getelementptr [0 x [0 x i8]*]* %12, i32 0, i32 %13
	%15 = load [0 x i8]** %14
	%16 = getelementptr [0 x i8]* %15, i32 0, i32 1
	%17 = load i8* %16
	%18 = zext i8 %17 to i32
	switch i32 %18, label %L.6 [
		i32 68, label %L.8
		i32 109, label %L.9
		i32 73, label %L.10
		i32 111, label %L.11
		i32 79, label %L.12
		i32 70, label %L.13
		i32 77, label %L.14
		i32 103, label %L.15
	]
L.8:
	%19 = load [0 x [0 x i8]*]** %argv
	%20 = load i32* %i
	%21 = getelementptr [0 x [0 x i8]*]* %19, i32 0, i32 %20
	%22 = load [0 x i8]** %21
	%23 = getelementptr [0 x i8]* %22, i32 0, i32 2
	%24 = load i8* %23
	%25 = zext i8 %24 to i32
	switch i32 %25, label %L.16 [
		i32 97, label %L.18
		i32 115, label %L.19
		i32 102, label %L.20
		i32 116, label %L.21
	]
L.18:
	%26 = getelementptr %A.2* @debug, i32 0, i32 1
	store i8 1, i8* %26
	br label %L.17
L.19:
	%27 = getelementptr %A.2* @debug, i32 0, i32 0
	%28 = getelementptr %A.1* %27, i32 0, i32 0
	store i8 1, i8* %28
	%29 = getelementptr %A.2* @debug, i32 0, i32 0
	%30 = getelementptr %A.1* %29, i32 0, i32 1
	store i8 1, i8* %30
	%31 = getelementptr %A.2* @debug, i32 0, i32 0
	%32 = getelementptr %A.1* %31, i32 0, i32 2
	store i8 1, i8* %32
	%33 = getelementptr %A.2* @debug, i32 0, i32 0
	%34 = getelementptr %A.1* %33, i32 0, i32 3
	store i8 1, i8* %34
	br label %L.17
L.20:
	%35 = getelementptr %A.2* @debug, i32 0, i32 2
	store i8 1, i8* %35
	br label %L.17
L.21:
	%36 = load [0 x [0 x i8]*]** %argv
	%37 = load i32* %i
	%38 = getelementptr [0 x [0 x i8]*]* %36, i32 0, i32 %37
	%39 = load [0 x i8]** %38
	%40 = getelementptr [0 x i8]* %39, i32 0, i32 3
	%41 = load i8* %40
	%42 = icmp uge i8 %41, 48
	br i1 %42, label %L.22, label %L.23
L.22:
	%43 = load [0 x [0 x i8]*]** %argv
	%44 = load i32* %i
	%45 = getelementptr [0 x [0 x i8]*]* %43, i32 0, i32 %44
	%46 = load [0 x i8]** %45
	%47 = getelementptr [0 x i8]* %46, i32 0, i32 3
	%48 = load i8* %47
	%49 = icmp ule i8 %48, 57
	br label %L.23
L.23:
	%50 = phi i1 [ false, %L.21 ], [ %49, %L.22 ]
	br i1 %50, label %L.25, label %L.24
L.25:
	%51 = getelementptr %A.2* @debug, i32 0, i32 3
	%52 = load [0 x [0 x i8]*]** %argv
	%53 = load i32* %i
	%54 = getelementptr [0 x [0 x i8]*]* %52, i32 0, i32 %53
	%55 = load [0 x i8]** %54
	%56 = getelementptr [0 x i8]* %55, i32 0, i32 3
	%57 = load i8* %56
	%58 = zext i8 %57 to i32
	%59 = sub i32 %58, 48
	%60 = getelementptr [10 x i8]* %51, i32 0, i32 %59
	store i8 1, i8* %60
	br label %L.24
L.24:
	br label %L.17
L.16:
	br label %L.17
L.17:
	br label %L.7
L.9:
	%61 = load [0 x [0 x i8]*]** %argv
	%62 = load i32* %i
	%63 = getelementptr [0 x [0 x i8]*]* %61, i32 0, i32 %62
	%64 = load [0 x i8]** %63
	%65 = getelementptr [0 x i8]* %64, i32 0, i32 2
	%66 = load i8* %65
	%67 = icmp ne i8 %66, 0
	br i1 %67, label %L.27, label %L.28
L.27:
	%68 = load [0 x [0 x i8]*]** %argv
	%69 = load i32* %i
	%70 = getelementptr [0 x [0 x i8]*]* %68, i32 0, i32 %69
	%71 = load [0 x i8]** %70
	%72 = getelementptr [0 x i8]* %71, i32 0, i32 2
	%73 = bitcast i8* %72 to [0 x i8]*
	%74 = getelementptr [0 x i8]* %73
	%75 = bitcast [0 x i8]* %74 to [0 x i8]*
	store [0 x i8]* %75, [0 x i8]** %targetarch
	br label %L.26
L.28:
	%76 = load i32* %i
	%77 = add i32 %76, 1
	store i32 %77, i32* %i
	%78 = load [0 x [0 x i8]*]** %argv
	%79 = load i32* %i
	%80 = getelementptr [0 x [0 x i8]*]* %78, i32 0, i32 %79
	%81 = load [0 x i8]** %80
	%82 = bitcast [0 x i8]* %81 to [0 x i8]*
	store [0 x i8]* %82, [0 x i8]** %targetarch
	br label %L.26
L.26:
	br label %L.7
L.10:
	%83 = load [0 x [0 x i8]*]** %argv
	%84 = load i32* %i
	%85 = getelementptr [0 x [0 x i8]*]* %83, i32 0, i32 %84
	%86 = load [0 x i8]** %85
	%87 = getelementptr [0 x i8]* %86, i32 0, i32 2
	%88 = bitcast i8* %87 to [0 x i8]*
	%89 = getelementptr [0 x i8]* %88
	%90 = bitcast [0 x i8]* %89 to [0 x i8]*
	%91 = call %lex.SearchPathEntry* @lex_SearchPathAdd([0 x i8]* %90, i8 0)
	br label %L.7
L.11:
	%92 = load [0 x [0 x i8]*]** %argv
	%93 = load i32* %i
	%94 = getelementptr [0 x [0 x i8]*]* %92, i32 0, i32 %93
	%95 = load [0 x i8]** %94
	%96 = getelementptr [0 x i8]* %95, i32 0, i32 2
	%97 = load i8* %96
	%98 = icmp ne i8 %97, 0
	br i1 %98, label %L.30, label %L.31
L.30:
	%99 = load [0 x [0 x i8]*]** %argv
	%100 = load i32* %i
	%101 = getelementptr [0 x [0 x i8]*]* %99, i32 0, i32 %100
	%102 = load [0 x i8]** %101
	%103 = getelementptr [0 x i8]* %102, i32 0, i32 2
	%104 = bitcast i8* %103 to [0 x i8]*
	%105 = getelementptr [0 x i8]* %104
	%106 = bitcast [0 x i8]* %105 to [0 x i8]*
	store [0 x i8]* %106, [0 x i8]** %outfile
	br label %L.29
L.31:
	%107 = load i32* %i
	%108 = add i32 %107, 1
	store i32 %108, i32* %i
	%109 = load [0 x [0 x i8]*]** %argv
	%110 = load i32* %i
	%111 = getelementptr [0 x [0 x i8]*]* %109, i32 0, i32 %110
	%112 = load [0 x i8]** %111
	%113 = bitcast [0 x i8]* %112 to [0 x i8]*
	store [0 x i8]* %113, [0 x i8]** %outfile
	br label %L.29
L.29:
	br label %L.7
L.12:
	%114 = load [0 x [0 x i8]*]** %argv
	%115 = load i32* %i
	%116 = getelementptr [0 x [0 x i8]*]* %114, i32 0, i32 %115
	%117 = load [0 x i8]** %116
	%118 = getelementptr [0 x i8]* %117, i32 0, i32 2
	%119 = load i8* %118
	%120 = zext i8 %119 to i32
	switch i32 %120, label %L.32 [
		i32 115, label %L.34
		i32 122, label %L.35
	]
L.34:
	%121 = getelementptr %A.3* @feature, i32 0, i32 0
	store i8 1, i8* %121
	br label %L.33
L.35:
	%122 = getelementptr %A.3* @feature, i32 0, i32 0
	store i8 2, i8* %122
	br label %L.33
L.32:
	br label %L.33
L.33:
	br label %L.7
L.13:
	%123 = load [0 x [0 x i8]*]** %argv
	%124 = load i32* %i
	%125 = getelementptr [0 x [0 x i8]*]* %123, i32 0, i32 %124
	%126 = load [0 x i8]** %125
	%127 = getelementptr [0 x i8]* %126, i32 0, i32 2
	%128 = load i8* %127
	%129 = zext i8 %128 to i32
	switch i32 %129, label %L.36 [
		i32 117, label %L.38
		i32 116, label %L.39
		i32 99, label %L.40
		i32 97, label %L.41
	]
L.38:
	%130 = getelementptr %A.3* @feature, i32 0, i32 1
	store i8 1, i8* %130
	br label %L.37
L.39:
	%131 = getelementptr %A.3* @feature, i32 0, i32 4
	store i8 1, i8* %131
	br label %L.37
L.40:
	%132 = getelementptr %A.3* @feature, i32 0, i32 5
	store i8 1, i8* %132
	br label %L.37
L.41:
	%133 = getelementptr %A.3* @feature, i32 0, i32 6
	store i8 1, i8* %133
	br label %L.37
L.36:
	br label %L.37
L.37:
	br label %L.7
L.14:
	%134 = getelementptr %A.3* @feature, i32 0, i32 2
	store i8 1, i8* %134
	br label %L.7
L.15:
	%135 = getelementptr %A.3* @feature, i32 0, i32 3
	store i8 1, i8* %135
	br label %L.7
L.6:
	br label %L.7
L.7:
	%136 = load i32* %i
	%137 = add i32 %136, 1
	store i32 %137, i32* %i
	br label %L.1
L.2:
	%138 = load i32* %i
	%139 = load i32* %argc
	%140 = icmp uge i32 %138, %139
	br i1 %140, label %L.43, label %L.42
L.43:
	store i32 3, i32* %rv.0
	br label %return
L.42:
	%141 = getelementptr %A.3* @feature, i32 0, i32 2
	%142 = load i8* %141
	%143 = icmp ne i8 %142, 0
	br i1 %143, label %L.45, label %L.44
L.45:
	%n = alloca i32
	%144 = load [0 x [0 x i8]*]** %argv
	%145 = load i32* %i
	%146 = getelementptr [0 x [0 x i8]*]* %144, i32 0, i32 %145
	%147 = load [0 x i8]** %146
	%148 = getelementptr [0 x i8]* %147
	%149 = bitcast [0 x i8]* %148 to [0 x i8]*
	%150 = call i32 @zstr_len([0 x i8]* %149, i32 1024)
	store i32 %150, i32* %n
	%151 = load [0 x [0 x i8]*]** %argv
	%152 = load i32* %i
	%153 = getelementptr [0 x [0 x i8]*]* %151, i32 0, i32 %152
	%154 = load [0 x i8]** %153
	%155 = load i32* %n
	%156 = sub i32 %155, 4
	%157 = getelementptr [0 x i8]* %154, i32 0, i32 %156
	%158 = bitcast i8* %157 to [4 x i8]*
	%159 = getelementptr [4 x i8]* %158
	%160 = bitcast [4 x i8]* %159 to [0 x i8]*
	%161 = getelementptr [5 x i8]* @S.881
	%162 = bitcast [5 x i8]* %161 to [0 x i8]*
	%163 = call i8 @zstr_eq([0 x i8]* %160, [0 x i8]* %162, i32 1024)
	%164 = icmp ne i8 %163, 0
	br i1 %164, label %L.47, label %L.46
L.47:
	%165 = load [0 x [0 x i8]*]** %argv
	%166 = load i32* %i
	%167 = getelementptr [0 x [0 x i8]*]* %165, i32 0, i32 %166
	%168 = load [0 x i8]** %167
	%169 = load i32* %n
	%170 = sub i32 %169, 4
	%171 = getelementptr [0 x i8]* %168, i32 0, i32 %170
	store i8 0, i8* %171
	%172 = load [0 x [0 x i8]*]** %argv
	%173 = load i32* %i
	%174 = getelementptr [0 x [0 x i8]*]* %172, i32 0, i32 %173
	%175 = load [0 x i8]** %174
	%176 = getelementptr [0 x i8]* %175
	%177 = bitcast [0 x i8]* %176 to [0 x i8]*
	call void @sys_fildes_str(i32 1, [0 x i8]* %177)
	%178 = getelementptr [5 x i8]* @S.882
	%179 = bitcast [5 x i8]* %178 to [0 x i8]*
	call void @sys_fildes_str(i32 1, [0 x i8]* %179)
	%180 = load [0 x [0 x i8]*]** %argv
	%181 = load i32* %i
	%182 = getelementptr [0 x [0 x i8]*]* %180, i32 0, i32 %181
	%183 = load [0 x i8]** %182
	%184 = load i32* %n
	%185 = sub i32 %184, 4
	%186 = getelementptr [0 x i8]* %183, i32 0, i32 %185
	store i8 46, i8* %186
	br label %L.46
L.46:
	br label %L.44
L.44:
	%187 = load [0 x i8]** %targetarch
	%188 = bitcast [0 x i8]* %187 to [0 x i8]*
	%189 = call i8 @target_set([0 x i8]* %188)
	%190 = icmp ne i8 %189, 0
	%191 = xor i1 %190, true
	br i1 %191, label %L.49, label %L.48
L.49:
	%192 = getelementptr [21 x i8]* @S.883
	%193 = bitcast [21 x i8]* %192 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %193)
	%194 = load [0 x i8]** %targetarch
	%195 = icmp ne [0 x i8]* %194, null
	br i1 %195, label %L.51, label %L.52
L.51:
	%196 = load [0 x i8]** %targetarch
	%197 = bitcast [0 x i8]* %196 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %197)
	br label %L.50
L.52:
	%198 = bitcast [4 x i8]* @target_DefaultTarget to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %198)
	br label %L.50
L.50:
	call void @sys_fildes_nl(i32 2)
	call void @target_list()
	store i32 2, i32* %rv.0
	br label %return
L.48:
	%199 = getelementptr %A.2* @debug, i32 0, i32 2
	%200 = load i8* %199
	%201 = icmp ne i8 %200, 0
	br i1 %201, label %L.54, label %L.53
L.54:
	call void @lex_SearchPathPrint()
	br label %L.53
L.53:
	%202 = load [0 x [0 x i8]*]** %argv
	%203 = load i32* %i
	%204 = getelementptr [0 x [0 x i8]*]* %202, i32 0, i32 %203
	%205 = load [0 x i8]** %204
	%206 = getelementptr [0 x i8]* %205
	%207 = bitcast [0 x i8]* %206 to [0 x i8]*
	%208 = call i8 @lex_FileOpen([0 x i8]* %207)
	%209 = icmp ne i8 %208, 0
	%210 = xor i1 %209, true
	br i1 %210, label %L.56, label %L.55
L.56:
	%211 = getelementptr [28 x i8]* @S.884
	%212 = bitcast [28 x i8]* %211 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %212)
	%213 = load [0 x [0 x i8]*]** %argv
	%214 = load i32* %i
	%215 = getelementptr [0 x [0 x i8]*]* %213, i32 0, i32 %214
	%216 = load [0 x i8]** %215
	%217 = getelementptr [0 x i8]* %216
	%218 = bitcast [0 x i8]* %217 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %218)
	call void @sys_fildes_nl(i32 2)
	store i32 2, i32* %rv.0
	br label %return
L.55:
	%219 = load [0 x i8]** %outfile
	%220 = icmp ne [0 x i8]* %219, null
	br i1 %220, label %L.58, label %L.57
L.58:
	%221 = load [0 x i8]** %outfile
	%222 = bitcast [0 x i8]* %221 to [0 x i8]*
	%223 = call i32 @open([0 x i8]* %222, i32 577, i32 416)
	store i32 %223, i32* %outfd
	%224 = load i32* %outfd
	%225 = icmp slt i32 %224, 0
	br i1 %225, label %L.60, label %L.59
L.60:
	%226 = getelementptr [31 x i8]* @S.885
	%227 = bitcast [31 x i8]* %226 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %227)
	%228 = load [0 x i8]** %outfile
	%229 = getelementptr [0 x i8]* %228
	%230 = bitcast [0 x i8]* %229 to [0 x i8]*
	call void @sys_fildes_str(i32 2, [0 x i8]* %230)
	call void @sys_fildes_nl(i32 2)
	store i32 2, i32* %rv.0
	br label %return
L.59:
	br label %L.57
L.57:
	call void @symb_Init()
	call void @ast_Init()
	%231 = call %symb.SymbNode* @symb_Push(%symb.SymbNode* null, %symb.SymbNode* null)
	%232 = load [0 x [0 x i8]*]** %argv
	%233 = load i32* %i
	%234 = getelementptr [0 x [0 x i8]*]* %232, i32 0, i32 %233
	%235 = load [0 x i8]** %234
	%236 = getelementptr [0 x i8]* %235
	%237 = bitcast [0 x i8]* %236 to [0 x i8]*
	%238 = call %ast.AstNode* @stmt_Program([0 x i8]* %237)
	store %ast.AstNode* %238, %ast.AstNode** %tree
	%239 = getelementptr %A.2* @debug, i32 0, i32 0
	%240 = getelementptr %A.1* %239, i32 0, i32 1
	%241 = load i8* %240
	%242 = icmp ne i8 %241, 0
	br i1 %242, label %L.62, label %L.61
L.62:
	call void @symb_Dump(i8 1)
	br label %L.61
L.61:
	call void @symb_Pop()
	%243 = getelementptr %A.2* @debug, i32 0, i32 0
	%244 = getelementptr %A.1* %243, i32 0, i32 0
	%245 = load i8* %244
	%246 = icmp ne i8 %245, 0
	br i1 %246, label %L.64, label %L.63
L.64:
	call void @symb_Dump(i8 1)
	br label %L.63
L.63:
	%247 = getelementptr %A.2* @debug, i32 0, i32 1
	%248 = load i8* %247
	%249 = icmp ne i8 %248, 0
	br i1 %249, label %L.66, label %L.65
L.66:
	%250 = load %ast.AstNode** %tree
	call void @ast_Dump(%ast.AstNode* %250)
	br label %L.65
L.65:
	%251 = call i8 @type_FwdCheck()
	%252 = load i8* @lex_ErrorCount
	%253 = icmp eq i8 %252, 0
	br i1 %253, label %L.68, label %L.67
L.68:
	%254 = getelementptr %A.3* @feature, i32 0, i32 2
	%255 = load i8* %254
	%256 = icmp ne i8 %255, 0
	br i1 %256, label %L.70, label %L.71
L.70:
	call void @sys_fildes_nl(i32 1)
	br label %L.69
L.71:
	%257 = load i32* %outfd
	%258 = load %ast.AstNode** %tree
	call void @llvm_Gen(i32 %257, %ast.AstNode* %258)
	br label %L.69
L.69:
	br label %L.67
L.67:
	%259 = load i8* @lex_ErrorCount
	%260 = icmp ne i8 %259, 0
	br i1 %260, label %L.73, label %L.72
L.73:
	store i32 1, i32* %rv.0
	br label %return
L.72:
	store i32 0, i32* %rv.0
	br label %return
return:
	%261 = load i32* %rv.0
	ret i32 %261
}
declare void @llvm.memcpy.p0i8.p0i8.i32(i8*, i8*, i32, i32, i1) nounwind
declare void @llvm.memset.p0i8.i32(i8*, i8, i32, i32, i1) nounwind
declare i64 @llvm.ctlz.i64(i64, i1)
declare i64 @llvm.cttz.i64(i64, i1)
